void revise(char *start, char *end)
{
char temp;
while(start < end)
{
temp = *end;
*end = *start;
*start = temp;
start++;
end--;
}
}
char* reverseWords(char* s)
{
char* start = NULL;
char* end = NULL;
int strLen = strlen(s);
int i = 0;
start = s;/*字符串首地址赋值*/
for (i = 0; i < strLen; i++)
{
if (s[i] == ' ')
{
end = &s[i];/*记录空格的位置*/
revise(start, end - 1);
start = end + 1;/*记录空格后字符的位置*/
}
else if (s[i + 1] == '\0')/*最后一个单词特殊处理*/
{
end = &s[i];
revise(start, end);
start = NULL;
}
}
return s;
}
思路:
1.遍历,找到空格的位置记录下来,然后反转即可。
2.最后一个单词要找到'\0'的位置做一下特殊处理。