#include <stdio.h> #include <stdlib.h> #include <assert.h> void reverse_str(char *left, char *right) { assert(left); assert(right); while (left < right) { char tmp = *left; *left = *right; *right = tmp; left++; right--; } } int my_strlen(const char * str) { int count = 0; while (*str++) { count++; } return count; } void reverse(char arr[])//(cahr *str) { char *pstart = arr; char *pend = arr + my_strlen(arr)-1; char *pcur = NULL; if ((arr == NULL) || (arr[0] == '\0')) { return; } reverse_str(pstart, pend);//逆序整個字符數組 while (*arr) { pcur = arr; while (*arr != '\0' && *arr != ' ') { arr++; } pend = arr - 1; reverse_str(pcur, pend); if (*arr == ' ') arr++; } } int main() { char arr[] = "student a am i"; //i ma a tneduts //i am a student reverse(arr); printf("%s\n", arr); system("pause"); return 0; }