C語言實現有一個字元陣列的內容為:"student a am i",請你將陣列的內容改為"i am a student"。
阿新 • • 發佈:2018-12-18
//有一個字元陣列的內容為:"student a am i",請你將陣列的內容改為"i am a student"。
要求:不能使用庫函式。 只能開闢有限個空間(空間個數和字串的長度無關)。
解題思路:
1>先將"student a am i"轉變成"i ma a tneduts";
2> 再將"i ma a tneduts"轉變成"i am a student";
3> 將結果放在ret中輸出。
原始碼:
#include<stdio.h> #include<stdlib.h> #include<string.h> //有一個字元陣列的內容為:"student a am i", // 請你將陣列的內容改為"i am a student". // 要求: // 不能使用庫函式。 // 只能開闢有限個空間(空間個數和字串的長度無關)。 void Exchange1(char* left, char* right) { char tmp = 0; while (left < right) { tmp = *left; *left = *right; *right = tmp; left++; right--; } } void Exchange(char arr[]) { int len = strlen(arr); char* start = arr; char* end = NULL; char* ret = arr; //逆序整個字串 Exchange1(arr, arr + len - 1); while (*arr) { start = arr; //判斷是否是一個單詞 while ((*arr != ' ') && (*arr != '\0')) { arr++; } //找到空格 end = arr - 1; //逆序單個單詞 Exchange1(start, end); if (*arr == ' ') { arr++; } } printf("%s\n", ret); } int main() { char arr[] = "student a am i"; Exchange(arr); system("pause"); return 0; }