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

本文介绍了一个C语言函数,该函数能够实现不改变单词内部结构的情况下,将句子中的单词顺序倒置。通过指针操作,实现了两个变量值的交换,以此达到倒置句子中单词位置的效果。

编写一个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;
}

        解决这个问题有很多种办法,这一次我使用了指针,当然这只是指针的简单应用,指针是编程中非常重要也是非常有用的一个东西,但指针的理解和使用也比较复杂,我同样也不敢说完全掌握了指针。在这里只是提供了一个指针解决问题的例子,在以后的博客中,我会总结一下我对指针的理解,希望和大家多多交流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值