字符串单词之间逆序
**问题描述:**将字符串单词进行逆序,例如:
输入:"hello world"
输出:"world hello"
基本思路:
-
1.先将整个字符串逆序
-
2.再将每个单词逆序,遇到
\0
就停下来
图例:
#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[100] = { 0 };
gets(arr);//从键盘(标准输入流)中输入一个字符串
int len = strlen(arr);
reverse(arr, arr + len - 1);//1.先将整个字符串逆序
char* start = arr;
//2.将每个单词逆序,一次循环逆序一个
while (*start)
{
char* end = start;
while (*end != ' ' && *end != '\0')
{
end++;
}//跳过字符
reverse(start, end - 1);
if (*end == ' ')
{
start = end + 1;
}
else//(*end == '\0')
{
start = end;
}
}
printf("%s\n", arr);
return 0;
}
输出结果: