需要从C中的字符串中删除字符

需要从C中的字符串中删除字符,c,string,C,String,我需要编写一个程序,将一个字符串和一个字符作为输入,然后从字符串中删除所有该字符。问题是我需要使用相同的字符串来打印输出。到目前为止,我所做的代码没有删除任何内容,我也不知道为什么 #include <stdio.h> #include <string.h> #define MAX_LENGTH 25 int main(void) { char string[MAX_LENGTH]; int character; int count, i, j

我需要编写一个程序,将一个字符串和一个字符作为输入,然后从字符串中删除所有该字符。问题是我需要使用相同的字符串来打印输出。到目前为止,我所做的代码没有删除任何内容,我也不知道为什么

#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 25


int main(void)
{
    char string[MAX_LENGTH];
    int character;
    int count, i, j;

    printf("Enter a string (max length 25): ");
    fgets(string, MAX_LENGTH, stdin);
    printf("Enter a character: ");
    scanf("%d", character);

    count = 0;
    for (i = 0; string[i] != '\0'; i++){
        while (string[i] == character){
            count ++;
            for (j = i; string[j] != '\0'; j++){
                string[j] = string[j+1];
            }
            string[j] = '\0';
        }

    }
    printf("Output String: %s", string);
    printf("Output Count: %d\n", count);
}
#包括
#包括
#定义最大长度25
内部主(空)
{
字符字符串[最大长度];
整数字符;
int计数,i,j;
printf(“输入字符串(最大长度25):”;
fgets(字符串、最大长度、标准尺寸);
printf(“输入字符:”);
scanf(“%d”,字符);
计数=0;
对于(i=0;字符串[i]!='\0';i++){
while(字符串[i]==字符){
计数++;
对于(j=i;字符串[j]!='\0';j++){
字符串[j]=字符串[j+1];
}
字符串[j]='\0';
}
}
printf(“输出字符串:%s”,字符串);
printf(“输出计数:%d\n”,计数);
}

编译器很容易发现代码中的第一个问题:

$ clang char.c
char.c:15:17: warning: format specifies type 'int *' but the argument has type 'int' [-Wformat]
scanf("%d", character);
       ~~   ^~~~~~~~~
 1 warning generated.
如果将
字符
的地址替换为
字符
,则代码将编译,但仍无法正常工作。首先,将
%d
替换为
%c
,因为您需要的是
字符
,而不是
整数
,并相应地更新定义(
字符
)。然后,如果只需要输出输入字符串减去指定字符的任何出现次数,只需逐个迭代字符即可:

#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 25


int main(void)
{
    char string[MAX_LENGTH];
    char character;
    int count, i, j;

    printf("Enter a string (max length 25): ");
    fgets(string, MAX_LENGTH, stdin);
    printf("Enter a character: ");
    scanf("%c", &character);
    printf("%s", "Output String: ");
    count = 0;
    for (i = 0; string[i] != '\0'; i++){
        if (string[i] != character) {
            putchar(string[i]);
            count++;
        }
    }

    printf("Output Count: %d\n", count);
}

%d
用于输入整数
scanf
正在使用指针。当您单步执行时,调试器会显示什么?启用编译器的所有警告以捕获简单错误,如
int character。。。scanf(“%d”,字符)如果目标角色连续出现多次,循环也有点错误。是的,这很有效,非常感谢。对这个lol来说还是很新的。
$ clang char.c -o char && ./char
Enter a string (max length 25): arra
Enter a character: r
Output String: aa
Output Count: 2