liunx 句子的逆序“you are from yangzhou”

来源:互联网 发布:传感器数据采集器 编辑:程序博客网 时间:2024/05/22 10:52

关于句子的逆序,我们首先想到的是把它们先逆序过来,然后找到空格,定义3个指针p1,p2,p3,先用俩个指针把句子逆序,在用p2一个指针跑完整个句子,遇到空格就“告诉后面的指针”用p2指针找到空格前的字符值 付给一个指针,一直进行,然后在逆序。。
编码如下:

#include <stdio.h>#include <string.h>int main(){    // char *p = "I am from yangzhou";    // char str[] = "I am from yangzhou";    char str[] = "you are from yangzhou";    // 将整个字符串逆序    char *p1 = str;    char *p2 = str + strlen(str) - 1;    char *p3 = NULL;  // 用于将单词逆序    char tmp;    while (p1 < p2)    {        tmp = *p1;        *(p1++) = *p2;        *(p2--) = tmp;    }    puts(str);    // 再将每一个单词进行逆序,单词通过空格去找    p1 = str;    p2 = str;    while(*p2) // p2找到字符串结束为止    {        if (*p2 == ' ') // 找到一个单词,要将前面的单词进行逆序        {            p3 = p2 - 1;            while (p1 < p3)            {                tmp = *p1;                *(p1++) = *p3;                *(p3--) = tmp;            }            p1 = p2 + 1;        }        p2++;    }    p3 = p2 - 1;    while (p1 < p3)    {        tmp = *p1;        *(p1++) = *p3;        *(p3--) = tmp;    }    puts(str);    return 0;}
原创粉丝点击