将一句话的单词进行倒置,标点不倒置。比如i like beijing.经过函数变为:beijing. like i
#include <stdio.h>
//i like beijing.
//beijing. like i
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);//不使用scanf,因为scanf遇空格会停止输入
//两步翻转法
//1.字符串整体翻转
//.gnijieb ekil i
int len = strlen(arr);
reverse(arr,arr+len-1);
//2.每个单词翻转
//beijing. like i
char* start = arr;
while (*start)
{
char* end = start;
while (*end !=' ' && *end !='\0')
{
end++;
}
//逆序一个单词
reverse(start, end - 1);
if (*end == ' ')
start = end + 1;
else
start = end;
}
printf("%s", arr);
return 0;
}