您的位置:首页 > 运维架构 > Linux

简单LinuxC程序关于倒置句子中的单词位置(指针的使用)

2017-07-17 19:36 405 查看
编写一个C函数,将句子中的单词位置倒置,而不改变单词内部结构。

例如:输入I am from shanghai,输出shanghai from am I。

要求:使用指针交换两个变量的值。

源代码如下:

#include <stdio.h>
#include <string.h>
#define MAX 100

//利用指针交换两个变量的值
int JiaoHuan(char *p1,char *p2)
{
char temp;

while (p1 < p2)
{
temp = *p1; //*取该地址表示的内存的值
*p1++ = *p2;
*p2-- = temp;
}

return 0;
}

int Rev(char str[])
{
int len;
len = strlen(str); //求字符串长度
str[len - 1] = '\0'; //将最后的换行符换为空字符,以去除换行
len--; //字符串长度减1
char *p1 = str; //指针p1指向字符串首
char *p2 = str + len - 1; //指针p2指向字符串尾
char *p3 = str; ////指针p1指向字符串首

JiaoHuan(p1,p2);

while (*p3++)
{
if (*p3 == ' ' || *p3 == '\0') //扫描到空格或字符串尾(空字符)就再次逆序,将单词恢复
{
p2 = p3 - 1;
JiaoHuan(p1,p2);
p1 = p3 + 1;
}
}

return 0;
}

int main()
{
char str[MAX];
printf ("input a string:");
fgets (str,MAX,stdin); //从键盘读入一个字符串

Rev (str);
printf("倒置后的结果:\n%s\n",str);

return 0;
}


        解决这个问题有很多种办法,这一次我使用了指针,当然这只是指针的简单应用,指针是编程中非常重要也是非常有用的一个东西,但指针的理解和使用也比较复杂,我同样也不敢说完全掌握了指针。在这里只是提供了一个指针解决问题的例子,在以后的博客中,我会总结一下我对指针的理解,希望和大家多多交流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐