将一个字符串,按单词将该字符串逆序,如输入"I love you",输出为"you love I"。方法:先按单词逆序,再对整个句子逆序。
下面直接参考代码:
//给定一个字符串,按单词将该字符串逆序,不包括标点
#include
//p和q之间的逆序
void ReverseWord(char *p, char *q)
{
while(p < q)
{
char t;
t = *q;
*q = *p;
*p = t;
p++;
q--;//和正常的数据交换一样,可以引入第三方,注意地址的变化
}
}
char *ReverseSentence(char *s)
{
char *p = s;
char *q = s;
while(*q != '\0')
{
if(*q == ' ')
{//查到一个单词
printf("%d:q:%s\n", __LINE__, q);
ReverseWord(p,q-1);
q++; //指向下一个单词道字符
p = q;
printf("%d:q:%s\n", __LINE__, q);
}
else
q++;
}
ReverseWord(p, q-1);//逆序最后一个单词
ReverseWord(s, q-1);//整个句子逆序
return s;
}
int main(void)
{
char s[] = "I love you";
printf("%s\n", s);
ReverseSentence(s);
printf("%s\n", s);
return 0;
}