这道题可分为两步:第一步将整个字符串全部倒置:!anihC morf ma I
第二步部分倒置,如果不是空格,则倒置单词
#include <stdio.h>
#include <string.h>
int main()
{
int i = 0, j = 0;
int begin = 0, end = 0;
char str[] = "I am from China!", tmp;
//char tmp;
printf("--1--:str = %s\n", str);
//第一步:全部翻转
j = strlen(str) - 1;
while(j > i)
{
tmp = str[i];
str[i] = str[j];
str[j] = tmp;
j--;
i++;
}
printf("--2--:str = %s\n", str);
//第二步:将每个空格隔开的单词翻转
i = 0; //i = 0不能丢,要从头开始
while(str[i])
{
if(str[i] != ' ')
{
begin = i;
while(str[i] && str[i] != ' ')
{
i++;
}
i = i - 1;
end = i;
}
while(end > begin)
{
tmp = str[begin];
str[begin] = str[end];
str[end] = tmp;
end--;
begin++;
}
i++;
}
printf("--3--:str = %s\n", str);
return 0;
}