gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:46:03 24 4
gpt4 key购买 nike

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

#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);
}

最佳答案

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

$ 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.

如果您将 character 的地址替换为 &character,您的代码将可以编译,但仍然无法正常工作。首先,将 %d 替换为 %c,因为您需要一个 char,而不是 int,然后更新定义相应地(char 字符)。然后,如果您只需要输出输入字符串减去指定字符的所有出现次数,则可以通过简单地逐个迭代字符来获得:

#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);
}

输出:

$ clang char.c -o char && ./char
Enter a string (max length 25): arra
Enter a character: r
Output String: aa
Output Count: 2

关于c - 需要从C中的字符串中删除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43903267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com