void delchar( char *str, char c ){ char *p = str; while(*p!='\0'){ if(*p==c) strcpy(p,p+1); else p++; }
时间: 2025-03-12 22:15:18 浏览: 43
### C语言删除字符串中指定字符的函数实现
在C语言中,可以通过编写自定义函数来删除字符串中的指定字符。以下是基于已有引用内容以及标准实践的一种具体实现方式。
#### 实现代码
以下是一个完整的 `delete_string` 函数实现:
```c
#include <stdio.h>
#include <string.h>
void delete_string(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'; // 添加字符串终止符
}
int main() {
char str[100];
printf("请输入原始字符串: ");
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0'; // 去除输入中的换行符
char ch;
printf("请输入要删除的字符: ");
scanf("%c", &ch);
delete_string(str, ch); // 调用删除函数
printf("删除后的字符串: %s\n", str);
return 0;
}
```
上述代码实现了通过遍历字符串并跳过指定字符的方式完成删除功能[^3]。此方法仅需单次遍历字符串即可完成操作,效率较高。
---
#### 关键点解析
1. **字符串遍历逻辑**
使用两个索引变量 `i` 和 `j` 来分别表示源字符串的位置和目标字符串的新位置。当遇到不需要删除的字符时,将其复制到新的位置上。
2. **字符串终止符处理**
在循环结束后,需要手动设置 `\0` 终止符以确保结果仍然是合法的C风格字符串。
3. **时间复杂度分析**
此算法的时间复杂度为 O(n),其中 n 是字符串长度。由于只需一次线性扫描即可完成任务,因此性能较好。
4. **注意事项**
输入字符串应具有足够的空间存储修改后的数据。如果使用固定大小数组,则需要注意防止溢出。
---
### 示例运行
假设用户输入如下:
- 原始字符串:`hello world`
- 待删除字符:`l`
则输出结果为:
```
heo word
```
---
阅读全文
相关推荐



















