题目: 编写一个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;}
}