i应该等于strlen(a)-1
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<assert.h>
void Reversed(char* left, char* right)
{
assert(left);
assert(right);
while (left < right)
{
char temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
int main()
{
printf("描述\n");
printf("将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I\n");
printf("输入描述:每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100\n");
printf("输出描述:依次输出倒置之后的字符串,以空格分割\n");
printf("示例1\n");
printf("I like beijing.\n");
printf("输出\n");
printf("beijing. like I\n");
printf("==================================代码执行===================================\n");
printf("\n");
char arr[101] = { 0 };
int i = 0;
// 接收输入的字符串 -》 gets();
gets(arr); // 接收字符串
int lenght = strlen(arr); // 求字符串字符长度
// 字符串进行逆序 -> 将整个字符串倒序
Reversed(arr, arr + lenght - 1);
//printf("%s",arr);
char* start = arr;
while (*start != '\0')
{
char* end = start;
while (*end != ' ' && *end != '\0')
{
end++;
}
Reversed(start, end - 1);
end++;
start = end;
}
// 输出字符串
printf("%s", arr);
printf("\n");
printf("==================================代码执行==================================\n");
return 0;
}