加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C语言用指针实现将字符串里的单词顺序倒置

发布时间:2020-12-13 19:46:55 所属栏目:百科 来源:网络整理
导读:将字符串里词顺序倒置,如"Times New Roman"变为"Roman New Times"。以空格为分隔符。 还比如把 "Welcome to India" 变成"India to Welcome" /*思路:比如把hello world反转,做法是先把它整体反转,然后在一个单词一个单词的反转 变成dlorw olleh 然后world

将字符串里词顺序倒置,如"Times New Roman"变为"Roman New Times"。以空格为分隔符。
还比如把"Welcome to India" 变成"India to Welcome"


/*
	思路:
	比如把hello world反转,做法是先把它整体反转,然后在一个单词一个单词的反转
	  变成dlorw olleh
	  然后world hello
*/
#include <stdio.h>
#include <string.h>
void reverse(char *str,int b,int e)
{
	char temp;
	if(str==NULL)
		return;
	for(;b<e;b++,e--)
	{
		temp = str[e];
		str[e] = str[b];
		str[b] = temp;
	}
}
void reverseEveryWord(char *str)
{
	int temp=0,b=0;
	char *start=str;//用start做为一个一直向前移动的标记。
	if(start==NULL)
		return ;
	while(*start)
	{
		if(*start!=' ')
		{
			temp++;
			start++;
		}else
		{
			reverse(str,b,temp-1);//这边反转的是str
			temp++;
			b = temp;
			start++;
		}
	}
	reverse(str,temp-1);//while循环结束时还有最后一个单词没有反转
}
int main()
{
	char str[100];
	int length;

	printf("Input a string please:n");
	while(gets(str)!=NULL)
	{
		length = strlen(str);
		reverse(str,length-1);
		reverseEveryWord(str);
		printf("After Worlds Reverse:n%sn",str);
		printf("Input a string please:n");
	}
	return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读