废话不多说,先上代码
#include<stdio.h>
#include<string.h>
void reverse(char* left, char* right) //字符串的逆序
{
while (left < right){
char temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
int main()
{
char arr[100] = { 0 };
// gets(arr);
// scanf("%s",arr); //遇到空格或回车停止接收
// scanf("%[^\n]",arr);
fgets(arr,sizeof(arr)-1,stdin); //从标准输入(键盘)读取一行字符串,包括\n
reverse(arr, &arr[strlen(arr) - 1]); //一、先整体逆序
char* start = arr;
char* end = start;
while (*start){
while (*end != ' ' && *end != '\0') //将end指向单词后面的空格
end++;
reverse(start, end - 1); //二、完成一个单词的正序(此操作是把原来整体逆序的单词
//再逆序为正序)
if (!*start) //等价于 *start == '\0'
start