字符串中删除指定字母,并复制所有指定字母

删除一个字符串中的所有的 ‘a’. 并复制所有的 ‘b’. 假设字符数组足够大.

void stringContain3(char * s, int n )
{
    int m = 0, numB = 0;
    printf("///");
    for(int i = 0; i < n - 1; ++i)
    {
        if (s[i] != 'a')
            s[m++] = s[i];
        if(s[i] == 'b')
            ++numB;
    }
    s[m] = 0;
    int length = m + numB;
    s[length] = 0;
    for(int i = length - 1, j = m - 1; j >= 0; --j)
    {
    //  s[i--] = s[j];
        int temp = i;
        if(s[j] == 'b')
            s[i--] = 'b';
    }   
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是一个示例程序,实现了删除字符串一个字母以及删除字符串字母之外的所有字符的功能: ```c #include <stdio.h> #include <string.h> #include <ctype.h> void delete_char(char *str, char c) { int len = strlen(str); int i, j; for (i = j = 0; i < len; i++) { if (str[i] != c) { str[j++] = str[i]; } } str[j] = '\0'; } void delete_non_alpha(char *str) { int len = strlen(str); int i, j; for (i = j = 0; i < len; i++) { if (isalpha(str[i])) { str[j++] = str[i]; } } str[j] = '\0'; } int main() { char str[100]; char c; printf("Enter a string: "); fgets(str, sizeof(str), stdin); str[strcspn(str, "\n")] = '\0'; printf("Enter a character to delete: "); scanf("%c", &c); delete_char(str, c); printf("After deleting '%c': %s\n", c, str); delete_non_alpha(str); printf("After deleting non-alphabetic characters: %s\n", str); return 0; } ``` 在该程序,delete_char()函数通过遍历字符串,将不等于指定字符的字符从原字符串复制到新字符串,最后将新字符串复制回原字符串,实现了删除字符串一个字母的功能。 delete_non_alpha()函数通过遍历字符串,将是字母的字符从原字符串复制到新字符串,最后将新字符串复制回原字符串,实现了删除字符串字母之外的所有字符的功能。该函数使用了ctype.h头文件的isalpha()函数来判断字符是否是字母。 ### 回答2: C语言删除字符串一个字母可以通过遍历字符串的每个字符来实现。具体步骤如下: 1. 定义一个字符数组或指针变量来存储字符串。 2. 使用循环遍历字符串的每个字符,可以使用for循环或者while循环。可以按照下面的代码示例来进行遍历: ``` int i = 0; while(str[i] != '\0') // '\0' 表示字符串的结束符 { // 在此处进行操作处理每个字符 i++; } ``` 3. 在循环,可以使用条件语句来判断当前字符是否为要删除字母。如果是,则继续遍历下一个字符。如: ``` int i = 0; while(str[i] != '\0') { if(str[i] == 'a') // 'a' 表示要删除字母 { i++; continue; // 继续下一个字符 } // 当前字符不是要删除字母,执行其他操作 // ... i++; } ``` 4. 如果当前字符不是要删除字母,可以将其保留下来,可以将其复制到新的字符串或通过覆盖原来的字符串达到删除的效果。例如: ``` int i = 0; int j = 0; while(str[i] != '\0') { if(str[i] == 'a') // 'a' 表示要删除字母 { i++; continue; // 继续下一个字符 } str[j] = str[i]; // 将当前字符复制到新的位置 i++; j++; } str[j] = '\0'; // 在新的字符串末尾加上结束符 ``` 5. 最后,输出删除字母后的字符串,或根据实际需求进行后续操作。 需要注意的是,通过上述代码只能删除一个字母,如果需要删除多个字母,可以在循环添加相应的判断条件和操作逻辑。 ### 回答3: 要删除字符串的一个字母,我们可以使用C语言提供的字符串处理函数来实现。 首先,我们需要定义一个函数,该函数接收一个字符串作为输入,并删除的一个字母。我们可以使用循环结构遍历字符串的每个字符,若字符不等于要删除字母,则将其追加到一个新的字符串。最后返回这个新的字符串作为结果。 下面是一个示例程序: ```c #include <stdio.h> #include <string.h> void removeCharacter(char str[], char ch) { int i, j; int n = strlen(str); for (i = 0, j = 0; i < n; i++) { if (str[i] != ch) { str[j] = str[i]; j++; } } str[j] = '\0'; // 在末尾加上字符串结束符 } int main() { char str[100]; char ch; printf("请输入字符串: "); scanf("%s", str); printf("请输入要删除字母: "); scanf(" %c", &ch); // 注意要在%c前加上空格,以消除之前输入字符串时的换行符 removeCharacter(str, ch); printf("删除字母后的字符串为: %s\n", str); return 0; } ``` 在程序运行时,首先要求用户输入一个字符串,然后输入要删除字母。接下来调用`removeCharacter()`函数删除字符串字母,并将结果打印出来。 举例来说,假设我们输入字符串为"Hello",要删除字母为"o"。运行程序后,输出结果为"Hell","o"字母删除

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值