题目

删除一个字符串中的指定字母,如:字符串 “aca”,删除其中的 a 字母。


思路

  • 依次遍历字符串中的每个字符;
  • 检查字符是否等于要删除的字符;
  • 如果是,则跳过该字符,否则将该字符添加到新的字符串中;
  • 最后返回新的字符串。

代码

#include <stdio.h>
#include <string.h>

int main(){
    char string[100]; // 输入的原始字符串
    char result[100]; // 输出的新字符串
    char target; // 要删除的字符
    int i, j = 0;

    printf("请输入一个字符串:");
    fgets(string, sizeof(string), stdin); // 读取字符串

    printf("请输入要删除的字符:");
    scanf(" %c", &target); // 读取要删除的字符

    for(i=0; string[i]!='\0'; i++){
        if(string[i] != target){
            result[j] = string[i]; // 将不等于目标字符的字符添加到结果字符串中
            j++;
        }
    }
    result[j] = '\0'; // 字符串结束符

    printf("删除 '%c' 后的字符串是:%s\n", target, result);

    return 0;
}

输出结果

请输入一个字符串:aca
请输入要删除的字符:a
删除 'a' 后的字符串是:c

请输入一个字符串:asdfgdsadfasdf
请输入要删除的字符:a
删除 'a' 后的字符串是:sdfgdsdfsdf

#单独函数封装(数组索引)

代码

#include <stdio.h>
#include <string.h>

// 删除字符串中的指定字符,返回新字符串
void delete_char(char *src, char *dest, char target){
    int i, j = 0;
    
    for(i=0; src[i]!='\0'; i++){
        if(src[i] != target){
            dest[j] = src[i];
            j++;
        }
    }

    dest[j] = '\0'; // 添加字符串结束符
}

int main(){
    char string[100];
    char result[100];
    char target;

    printf("请输入一个字符串:");
    fgets(string, sizeof(string), stdin); // 读取字符串
    string[strcspn(string, "\n")] = '\0'; // 去掉换行符

    printf("请输入要删除的字符:");
    scanf(" %c", &target); // 读取要删除的字符

    // 调用函数
    delete_char(string, result, target);

    printf("删除'%c'后的字符串:%s\n", target, result);

    return 0;
}

输出结果

请输入一个字符串:aca
请输入要删除的字符:a
删除'a'后的字符串:c

#单独函数封装(指针)

更多推荐