我们可以先把每个单词逆序,然后在把整个字符串逆序。
I like beijing.
I ekil .gnijieb 然后在逆序整个字符串
beijing. like I
#include<stdio.h>
#include<string.h>
void reverse(char*left,char*right)
{
while(left<right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
int main()
{
char arr[101]={0};
gets(arr);
//处理
char* cur = arr;//数组的起始地址
//逆序每个单词
while(*cur)
{
char* start = cur;//单词的起始位置
char* end = cur;//使end不断向后遍历
while(*end != ' ' && *end != '\0')//end遇到空格和\0停下
{
end++;
}
reverse(start/*单词始位置*/,end-1/*末位置*/);//把单个单词进行到序
cur=end+1;//end刚才指向空格,end+1指向下一个单词
}
//逆序整个字符串
int len = strlen(arr);
reverse(arr, arr+len-1);
printf("%s\n", arr);
return 0;
}
其实我们还可以先把整个字符串逆序,再把每个单词逆序,效果都是一样的。