有一個字元陣列的內容為:"student a am i", 將陣列的內容改為"i am a student"
阿新 • • 發佈:2018-11-05
有一個字元陣列的內容為:"student a am i", 將陣列的內容改為"i am a student"
要求:
不能使用庫函式
只能開闢有限個空間(空間個數和字串的長度無關)
eg:
student a am i
i ma a tneduts
i am a student
先將整個字串翻轉過來,再依次將單詞翻轉過來
程式碼:
#include <stdio.h> #include <stdlib.h> #include <string.h> //student a am i //i ma a tneduts //i am a student int Strlen(char* str){ //str指向的是一個空字串 if (*str == '\0'){ return 0; } //str指向的不是一個空字串,當前字元是字串中的一個元素 return 1 + strlen(1 + str); } //陣列被函式呼叫,隱式退化為指標 void Flip(char *str, int sz) { char *str1 = str; char *left = str; char *right = str + sz - 1; while (left < right) { char temp = *left; *left = *right; *right = temp; left++; right--; } while (*str1) { left = str1; while ((*str1 != '\0') && (*str1 != ' ')) { str1++; } right = str1 - 1; while (left < right) { char temp = *left; *left = *right; *right = temp; left++; right--; } if (*str1 == ' ') { str1++; } } } int main(){ char arr[] = "student a am i"; int length = Strlen(arr); //翻轉 Flip(arr,length); printf("%s\n", arr); system("pause"); return 0; }
執行結果: