C语言-按照单词反转字符串(完整代码)

编程实现以单词 为单位的字符串逆序  例如 HELLO WORLD ---- WORLD HELLO

目录

实现逻辑

实现代码如下:(完整备注)

执行结果如下:


实现逻辑

当前的实现逻辑,是通过两个指针变量,一个指针<temp>指向原来的字符串的最后一位,然后依次向前偏移,当偏移到' '空格位置时,使用第二个指针<t>,指向当前空格位置,然后 第二个指针,向后依次偏移读取,把读取到的内容,放到新的字符串里,

读取完一个单词后,temp指针继续向前偏移

到字符串的开始位置的时候,由于没有空格,所以需要手动给定,赋值一下

 

实现代码如下:(完整备注)

#include <stdio.h>
#include <string.h>
	
int main()
{
	char buf[128] = "HELLO WORLD I LOVE SLEEP";//这是原来的字符串
	char b[128] = {0};//这是转换后的字符串
	int len = strlen(buf);//这个算一个字符串的长度
	//printf("buf len == %d\n",len);//打印一下玩玩
	int i = 0;//这个是给外层循环用的,也可以直接用 while(长度--)
	int j = 0;//这个是给内层循环用的
	int num = 0;//这个是计数的
    int b_n = 0;//这个是 新的字符串数组的下标
	char *temp = &buf[len-1];//先让temp指针指向字符串的最后
	char *t;//然后定义了一个临时指针,用来复制字符串
	//这个外层循环主要是看需要走多少次
	for(i=0;i<len;i++)
	{
		num++;//每进入一次循环,个数加1---记录单词的长度
		if(*temp == ' ')
		{
			t = temp+1;//让新的指针,指向temp现在的位置,然后偏移t,给新的赋值
			//因为当前的位置是 空格,需要往后偏移一个
			//t++;//
			for(j=0;j<num-1;j++)//根据上面的计数,查看执行的次数
			{
				//printf("---%c---\n",*t);//打印测试一下
				b[b_n] = *t;//赋值
				t++;//偏移
				b_n++;
			}
			b[b_n] = ' ';//加空格
			b_n++;
			num = 0;//置0,
			//printf("===========\n");
		}
		temp--;//指向原来的指针往回走
		
		if(i==(len-1))//如果,偏移到最后一位,也就是刚开始的位置,这块没有空格,所以需要主动判断一下
		{
			t = buf;//指向开头

			while(*t != ' ')	
			{
				b[b_n] = *t;//赋值
				t++;//偏移
				b_n++;
			}
		}	
	}
	printf("buf -->%s\n",buf);
	printf("b   -->%s\n",b);
	return 0;	
}

执行结果如下:

 

附加:

        也可以直接使用 strtok 来裁剪一下 字符串,然后使用 strcat 拼接一下---并未测试

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值