#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void reverse(char * start, char * last){
char tmp;
while (start < last){
tmp = *start;
*start = *last;
*last = tmp;
start++;
last--;
}
}//逆序函数
void reversString(char * arr){
char * start = arr;
char * last;
int i;
for (i = 0; arr[i]; i++){
if(arr[i] == ' '){
last= arr + i - 1;//找到空格之后,让last指向空格前的字符
reverse(start, last);
start = arr + i + 1;//使start变化的语句,指向数组中下一个单词的首字母
}
}
last = arr + i - 1;//由于最后一个单词之后没有空格,所以将最后一个单词的逆置放在循环之外,start在循环内就已经确定好
reverse(start, last);
reverse(arr, last);//每个单词逆置之后,再将整个数组翻转过来,就能得到最终结果
}//逆置整个数组
int main(){
char arr[] = "student a am i";
reversString(arr);
puts(arr);//输出字符串函数
system("pause");
return 0;
}