C语言实现字符串删除字符函数

要求输入一个字符串内有若干个字符,再输入一个字符,使得输出字符串中这一字符全部被删除。

对于这个问题,我们考虑构造delete_me函数(delete是已定义过的函数不能再做变量名)来实现。我们首先想到的思路当然是使用两个字符串数组,一个输入原始字符串,一个进行删减处理后输出,代码如下:

#include <stdio.h>
int main()
{
	char a,str[100];
	void delete_me(char str[],char ch);
	printf("请输入字符串\n");
	gets(str);
	printf("请输入想删除的字符\n");
	scanf("%c",&a);
	delete_me(str,a);
	return 0;
}

void delete_me(char str[],char ch)
{
	char dstr[100];
	int i,j;
	for(i=j=0;str[i]!='\0';i++)
	{
		if(str[i]!=ch){
			dstr[j++]=str[i];
		}
	}
	dstr[j]='\0';
	printf("删除后字符串为:\n"); 
	printf("%s\n",dstr);
	
}

这种方法固然由于引入dstr而变得很好理解,但是我们会发现dstr是一个局部变量,输出dstr只能放在函数中。由模块化思想,我们希望这个函数仅做数据处理,而输出放在主函数中,这就要求我们只用一个数组进行处理。
优化如下:

#include <stdio.h>
int main()
{
	char a,str[100];
	void delete_me(char str[],char ch);
	printf("请输入字符串\n");
	gets(str);
	printf("请输入想删除的字符\n");
	scanf("%c",&a);
	delete_me(str,a);
	printf("删除后字符串为:\n"); 
	printf("%s\n",str);
	return 0;
}

void delete_me(char str[],char ch)
{
	int i,j;
	for(i=j=0;str[i]!='\0';i++)
		if(str[i]!=ch)
			str[j++]=str[i];
		
	str[j]='\0';	
}

运行结果:
在这里插入图片描述

  • 15
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值