需要从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