把字符串中的空格替换成#和##

修改空格成一个字符#

#include<stdio.h>
#include<string.h>


void SwpChar(char *str,int len)
{
	int i=0;
	while(str[i]!='\0')
	{
		if(str[i]==' ')
		str[i]='#';
		i++;
	}
}
int main()
{
	char str[100]="I am a student.";
	SwpChar(str,strlen(str));
	printf("%s\n",str);
	return 0;
}


for循环格式


void SwpChar(char *str,int len)
{
	int i;
	for(i=0;str[i]!='\0';i++)
	{
		if(str[i]==' ')
		str[i]='#';
	}
}

修改空格成##

void SwpChar(char *str,int len)//传长度,从库里直接调用
{
	int i=0;
	while(str[i]!='\0')//判断字符串没有结束,(字符串遇\0直接结束)
	for(int i=0;str[i]!='\0';i++)
	{
		if(str[i]==' ')//判断条件,空格
		{
			str[i]='#';//条件为真,则在i号下标的位置把里面元素改成'#'在数组里一个元素替换成另一个元素是可行的,但是一个元素替换成两个元素时,第二个会占用第i+1号下标的元素,所以需要定义一个循环,在替换字符后将其后面的统一向后移动,避免覆盖
			for(int j=len;j>i+1;j--)
			{
				str[j]=str[j-1];//元素统一向后移一位,把空出的一个单元格赋成'#'
			}
			str[i+1]='#';
			len+=1;//这句为满足不被覆盖的条件,长度自动加一,
		}
		i++;
	}
}


在for(int j=len;j>i+1;j--)中为什么用倒序循环的原因:如果为正序(j=i;j<len;j++),第一个往后移的字母覆盖它后面的字母,导致继续循环往后移动后所有的元素均成为第一个后移的元素,无意义.所以把循环设置为后序循环,将字符串最后自动隐藏的'\0'先后移.

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值