C primer plus 第六版 第十一章 第九題 程式設計練習答案

Aeron-A發表於2018-12-27

Github地址:φ(>ω<*)這裡這裡。

/*
    本任務為編寫一個函式,倒序排放字串陣列。。
     解題思路很簡單,兩個指標,分別指向頭尾。。。然後相性運動,替換值,直到中間。
*/

#include<stdio.h>
#include<string.h>

#define o 50

void turn(char * s1, char * s2, int length);

int main(void)
{
	int i = 0;
	int length = 0;
	char quit = 0;
	char name[50] = {};

	while(quit != 'q')
	{
		printf("Please input: \n");
		fgets(name, o, stdin);
		
		// 善後處理:替換換行符與清空輸入快取區。
		while(name[i] != '\n' && name[i] != '\0')
		{
			i++;
		}
		if(name[i] == '\n')
		{
			name[i] = '\0';
		}
		fflush(stdin);

		length = strlen(name);

		turn(name, name+length-1, length );

		printf("This is the result: \n");
		i = 0;
		while(i <= length)
		{
			printf("%c", name[i]);
			i++;
		}

		printf("\nDo you want to continue??????\nYes or quit :");
		quit = getchar();
		fflush(stdin);
	}

	printf("Bye ~\n");
	getchar();

	return 0;
}

void turn(char * s1, char * s2, int length)
{
	int i = 0;
	char temporary = 0;

	while(i < length/2 )
	{
		temporary = *s1;
		*s1 = *s2;
		*s2 = temporary;

		s1++;
		s2--;
		i++;
	}

	return;
}

 

相關文章