实现字符串按单词翻转
两步翻转法 1.字符串整体翻转 2.每个单词翻转
比如要将I am student.按单词翻转,变为student. am I
#include <stdio.h>
#include <string.h>
void reverse_string1(char* left,char* right)
{
char temp;
while (left < right)
{
temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
int main()
{
char arr1[20] = {0};
printf("请输入字符串:\n");
gets(arr1); //不能使用scanf,因为scanf遇到空格就输入结束了
int len = strlen(arr1);
reverse_string1(arr1,(arr1+len-1));
printf("整体逆序:%s\n", arr1); //.tenduts ma I
char* start = arr1;
while (*start != '\0')
{
char* end = start;
while (*end != ' ' && *end != '\0')
{
end++;
}
reverse_string1(start, end - 1); //end找到空格的首地址,要减一才是一个单词的最后一个字符
//如果是空格,则再找后面的单词,如果是'\0',start = '\0',退出循环
if (*end == ' ')
{
start = end + 1;
}
else
{
start = end;
}
}
printf("每个单词逆序:%s\n", arr1); //student. am I
return 0;
}