C语言实现字符串删除指定字符(禁止使用库函数)
C语言实现字符串删除指定字符(禁止使用库函数)
本文将使用C语言编写函数 del(char *s, char c),其功能是在 s 所指字符串中删除与变量 c 相同的字符。
代码要求:
- 禁止使用除
gets()和puts()之外的任何字符串处理库函数。
实现思路:
- 从键盘输入字符串和指定被删除的字符: 使用
gets()获取字符串,使用scanf()获取单个字符。 - 调用
del()函数实现删除操作: 函数接收字符串指针和需要删除的字符作为参数,遍历字符串,将非目标字符复制到新的位置,并更新字符串的结束标志�。 - 输出删除后的字符串: 使用
puts()打印删除后的字符串。
代码实现:
#include <stdio.h>
void del(char *s, char c) {
int i, j;
for (i = 0, j = 0; s[i] != '\0'; i++) {
if (s[i] != c) {
s[j++] = s[i];
}
}
s[j] = '\0';
}
int main() {
char s[100];
char c;
printf("请输入字符串: ");
gets(s);
printf("请输入需要删除的字符: ");
scanf(" %c", &c);
del(s, c);
printf("删除后的字符串: ");
puts(s);
return 0;
}
代码说明:
del()函数使用双指针遍历字符串,将非目标字符复制到新的位置,并更新字符串的结束标志\0。- 主函数中,使用
gets()获取输入字符串,使用scanf()获取单个字符,并调用del()函数进行删除操作。最后使用puts()输出删除后的字符串。
注意:
gets()函数存在安全风险,因为无法限制输入长度,可能会导致缓冲区溢出。建议使用更安全的输入方式,例如使用fgets()函数并指定最大输入长度。- 虽然题目要求禁止使用除
gets()和puts()之外的字符串处理库函数,但scanf()函数是标准库函数,用于格式化输入,并不属于字符串处理库函数。因此代码中使用scanf()函数获取单个字符是合法的。
希望本篇文章能帮助您理解C语言字符串处理的基本操作和函数的应用。
原文地址: https://www.cveoy.top/t/topic/bMfX 著作权归作者所有。请勿转载和采集!