请找出下面代码中的错误,要求是输入一个字符串和一个特定字符,在字符串中删除从该特定字符开始的所有字符。例如输入字符串为"abcdefg",特定字符为'd',删除后的字符串为"abc";输入字符串为"abcdefg",特定字符为'x',则输出“特定字符不存在”#include<stdio.h> #include<string.h> main() { int i,j,found=0; char a[100],b[100],ch; scanf("%s",a); scanf(" %c",&ch); for(i=0,j=0;i<strlen(a);i++) { if(a[i]=='ch') { found=1; break; } else { b[j++]=a[i]; } } b[j]='\n'; if(found) { printf("特定字符为%c,删除后的字符串为%s",ch,b[100]); } else { printf("特定字符不存在"); } }
时间: 2024-01-14 12:03:24 浏览: 106
下面是代码中的错误:
1. if(a[i]=='ch') 应该改为 if(a[i]==ch),因为我们需要判断的是特定字符ch,而不是字符串"ch"。
2. b[j]='\n' 应该改为 b[j]='\0',因为我们需要在字符串b的末尾添加一个空字符'\0',表示字符串的结束。
3. printf("特定字符为%c,删除后的字符串为%s",ch,b[100]) 应该改为 printf("特定字符为%c,删除后的字符串为%s",ch,b),因为字符串b已经存储了删除特定字符后的结果,不需要再加上索引[100]。
下面是修改后的代码:
```
#include<stdio.h>
#include<string.h>
int main()
{
int i, j, found = 0;
char a[100], b[100], ch;
scanf("%s", a);
scanf(" %c", &ch);
for(i = 0, j = 0; i < strlen(a); i++)
{
if(a[i] == ch)
{
found = 1;
break;
}
else
{
b[j++] = a[i];
}
}
b[j] = '\0';
if(found)
{
printf("特定字符为%c,删除后的字符串为%s", ch, b);
}
else
{
printf("特定字符不存在");
}
return 0;
}
```
阅读全文