題目: 編寫一個C函數,將”you are come from shanghai ”倒置為”shanghai from come are you”,及將句子中的單詞位置倒置,而不改變單詞內部結構
#include <stdio.h>
#include <string.h>
void change(char *p1, char *p2);
//函數聲明
int main()
{char str[] = {"you are come from shanghai"};char* p1 = str; char* p2 = str + strlen(str) - 1;char* p3 = NULL;change(p1, p2); //全部逆序先p2 = str; //p1,p2全部指向字符串開頭while (*p2) //p2向前移動,未到‘\0’時執行循環{if (' ' == *p2) //遇到空格,則將p1到p3間的逆序{p3 = p2 - 1;change(p1, p3);p1 = p2 + 1; //p2遇到空格后,p1指向空格后第一個單詞}p2++; }if (0 == *p2) //當p2到最后,將最后一個單詞逆序{p3 = p2 - 1;change(p1, p3);}puts(str); //輸出變換后的字符串return 0;
}void change(char *p1, char* p2) //執行逆序
{char tmp;while (p1 < p2){tmp = *p1;*(p1++) = *(p2);*(p2--) = tmp;}
}