C语言:删除一个字符串中的指定字母

题目:删除一个字符串中的指定字母。
如:字符串 “abcd”,删除其中的 a 字母。
输出:bcd

int main() {
	char str1[80],str2[80],c;
	int i = 0,j=0;
	printf("输入一个字符串:");
	scanf("%s", str1);
	getchar();//scanf("%c",&j);的问题,第二次是读入的一个换行符,而不是输入的字符,因此需要加一个getchar() 吃掉换行符
	printf("\n输入要删除的字母:");
	scanf("%c", &c);
	// for循环法
	for (i;i < strlen(str1);i++) {
		if (str1[i] != c) {
			str2[j++] = str1[i];
		}
	}
	str2[j] = '\0';

	//while循环法(任选一种皆可)
	/* 
	while (str1[i] != '\0') {
		if (str1[i] != c) {
			str2[j] = str1[i];
			j++;
		}
		i++;
	}
	if (str1[i] == '\0'){
		str2[j] = '\0';
	}
	*/

	printf("\n删除后的字符串:%s\n", str2);
	return 0;
}
### 如何在C语言删除字符串指定字符 要在C语言实现从字符串移除特定字符的功能,可以采用遍历字符串并构建新字符串的方式。以下是具体方法: 通过创建一个新的目标字符串,在原字符串上逐个检查每个字符是否等于要删除的目标字符。如果不相等,则将其复制到新的字符串;如果相等则跳过该字符。 下面是一个简单的函数示例来展示这一过程[^4]: ```c #include <stdio.h> #include <string.h> void removeChar(char *str, char c) { int j = 0; for(int i=0; str[i]!='\0'; ++i){ if(str[i]!=c){ str[j]=str[i]; j++; } } str[j]='\0'; } int main(){ char str[]="Example String"; printf("Original string: %s\n", str); removeChar(str,'e'); printf("String after removing 'e': %s\n", str); return 0; } ``` 上述代码定义了一个`removeChar` 函数用于从给定的字符串 `str` 移除所有的字符 `c` 。注意这里直接修改了原始字符串的内容,因此调用此函数前需确保传入的是可写内存区域内的字符串而不是常量字符串[^5]。 另外需要注意的是SDS(Simple Dynamic Strings)类型的字符串虽然也是以null结尾,但在处理时应考虑其内部结构可能带来的差异[^1]。对于标准C风格字符串而言,以上方式已经足够有效。 #### 关于索引操作与寄存器使用说明 当涉及到更底层的操作比如汇编级别编程时,可能会利用像 ESI 这样的寄存器作为索引来访问数组或者字符串元素[^2]。然而这通常是在编写高效循环或嵌入式应用时才会涉及的技术细节,在普通的高级程序设计场景下并不常见也不推荐手动干预这些硬件层面的东西除非确实必要。 最后值得注意的一点是关于分词技术的选择问题。尽管本题讨论的重点是如何去除某个特殊字符而非分割整个句子成单词列表等问题,但如果未来遇到类似的自然语言处理需求的话,那么借助正则表达式的强大模式匹配能力无疑是一种非常优雅且高效的解决方案之一[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qinnt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值