C語言: 有一個字元陣列的內容為:"student a am i", 請你將陣列的內容改為"i am a student".
阿新 • • 發佈:2019-02-10
題目:有一個字元陣列的內容為:"student a am i", 請你將陣列的內容改為"i am a student".
要求:不能使用庫函式。只能開闢有限個空間(空間個數和字串的長度無關)。
分析:分為兩大部分:①把整個字元陣列逆置
②:每個單詞逆置
具體程式碼如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> void reverse_str(char* left, char * right) { assert(left != NULL); assert(right != NULL); while (left < right) { char tmp = 0; tmp = *left; *left = *right; *right = tmp; left++; right--; } } void reverse(char* str) { //整體逆置 char *ret = str; int len = strlen(str); reverse_str(str, str + len - 1); //單詞逆置 while (*str != '\0') { char*start = str; char*end = start; while (*end != ' '&&(*end != '\0')) { end++; } reverse_str(start, end - 1); if (*end != '\0') { str = end + 1; } else { str = end; } } return ret; } int main() { char arr[] ="student a am i"; reverse(arr); printf("%s\n", arr); system("pause"); return 0; }