给定一个字符串,按单词将该字符串逆序,比如给定"This is a boy",则输出是"boy a is This",为了简化问题,字符串中不包含标点符号。
分两步
1 先按单词逆序得到"sihT si a yob"
2 再整个句子逆序得到"boy a is This"
//头文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//将指针p,q之间的单词反转
void ReverseWord(char *p, char *q)
{
//中间变量
char temp;
while(p<q)
{
temp=*p;
*p=*q;
*q=temp;
p++;
q--;
}
}
/*功能函数*/
void ReverseSent(char *s, char *sOut)
{
char *p=NULL;
char *q=NULL;
memcpy(sOut,s,strlen(s)+1);
p=q=sOut;
while(*q++!=NULL)
{
if (isspace(*q))
{
ReverseWord(p,q-1);
q++;
p=q;
}
}
//最后一个单词
ReverseWord(p,q-2);
//整个句子
ReverseWord(sOut,q-2);
}
void main()
{
char *buf="I am a boy";
char p[20];
ReverseSent(buf,p);
printf("%s\n%s\n",buf,p);
}