题目描述:现有一个字符串如:I love you, 请写一个功能函数将这个字符串中的单词反序,处理结果:you love I
思路:
1.首先我们先用两个指针指向字符串的首和尾,定义一个数组存放倒序后的字符串
2.从字符串最后一个单词末尾开始,先将一个单词逆序放置,用一个变量记录这个单词的长度,然后当一个单词倒序放置结束后,我们将这个单词再次进行逆序还原
3.再定义一个指针指向下一个单词的开头位置,方便对下一个单词的逆序操作。
代码如下:
#include <stdio.h>
#include <string.h>
char* wordSort(char *str)
{
if(NULL==str)
return NULL;
static char buf[64]={0};
char *front=buf;
int i=0;
int count=0;
char *p=str;
char *q=str;
char tmp;
//将指针Q指向字符串最后一个字母
while('\0'!=*q)
q++;
q--;
while(p<=q)
{
//先将一个完整的单词逆序放置
if(' '!=*q)
{
buf[i]=*q;
count++;//记录单词长度
}
//将逆序放置的单词再逆序变成原来的单词
else
{
char *rear=front+count-1;//指向单词末尾
while(front<=rear)
{
tmp=*front;//交换顺序
*front=*rear;
*rear=tmp;
front++;
rear--;
}
buf[i]=' ';
front=&buf[i+1];//指向下一个单词开头
count=0;//单词长度清零记录下一个单词长度
}
q--;
i++;
}
printf("%s\n",buf);
return buf;
}
int main(int argc, char *argv[])
{
char ptr[20]="I LOVE YOU";
char *p=wordSort(ptr);
printf("%s\n",p);
return 0;
}