给定一个字符串,按单词将该字符串逆序,比如给定"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); }
原文:http://blog.csdn.net/lsh_2013/article/details/45174327