C语言实现字符串删除指定字符(禁止使用库函数)

本文将使用C语言编写函数 del(char *s, char c),其功能是在 s 所指字符串中删除与变量 c 相同的字符。

代码要求:

  • 禁止使用除 gets()puts() 之外的任何字符串处理库函数。

实现思路:

  1. 从键盘输入字符串和指定被删除的字符: 使用 gets() 获取字符串,使用 scanf() 获取单个字符。
  2. 调用 del() 函数实现删除操作: 函数接收字符串指针和需要删除的字符作为参数,遍历字符串,将非目标字符复制到新的位置,并更新字符串的结束标志
  3. 输出删除后的字符串: 使用 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语言字符串处理的基本操作和函数的应用。

C语言实现字符串删除指定字符(禁止使用库函数)

原文地址: https://www.cveoy.top/t/topic/bMfX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录