先逆序所有的字符,再逆序每个单词
#include<stdio.h>
#include<string.h>
void reverse(char*left,char*right)
{
while (left < right)
{
char temp = *right;
*right = *left;
*left = temp;
left++;
right--;
}
}
int main()
{
char arr[100] = { 0 };
gets_s(arr);//gets_s函数可以输入空格等字符
int n = strlen(arr);
char* left = arr;
char* right = arr + n - 1;
reverse(left,right);//逆序字符串
//在逆序每个单词
char* cur = arr;
while (*cur)//如果*cur=='\0',跳出循环
{
char* start = cur;
char* end = cur;
while (*end != ' '&&*end!='\0')
{
end++;
}
reverse(start, end - 1);
//判断一下*end的内容
if (*end != '\0')
cur = end + 1;
else
break;
}
printf("%s", arr);
return 0;
}