/*------------------------------------------------------- 【程序改错】 --------------------------------------------------------- 主函数main调用fun函数,将str字符串中的所有与字符变量ch中相同的字符去掉, 最后输出str字符串。 下面给定的程序存在错误,请改正。 注意:不得增行或删行,也不得更改程序的结构。 -------------------------------------------------------*/ #include <stdio.h> void fun(char [], char ); int main() { char str[100], ch; gets(str); scanf("%c",&ch); /***********FOUND***********/ fun(str[],ch); printf("%s\n",str); return 0; } void fun(char str[], char ch) { int i=0, j=0; while (str[i]!=0) { if (str[i]!= ch) { /***********FOUND***********/ str[j++]=str[i++]; } i++; } /***********FOUND***********/ str[i]='\0'; }
时间: 2023-07-05 12:32:55 浏览: 101
改正后的程序如下:
```c
#include <stdio.h>
void fun(char [], char);
int main() {
char str[100], ch;
gets(str);
scanf("%c", &ch);
/***********FOUND***********/
fun(str, ch);
printf("%s\n", str);
return 0;
}
void fun(char str[], char ch) {
int i = 0, j = 0;
while (str[i] != '\0') {
if (str[i] != ch) {
/***********FOUND***********/
str[j++] = str[i];
}
i++;
}
/***********FOUND***********/
str[j] = '\0';
}
```
修改内容:
1. `fun` 函数调用时,不应在 `str` 后面加上 `[]`。
2. `fun` 函数中,在将不等于 `ch` 的字符复制到新的字符串 `str` 时,应该将 `str[j++]` 放在前面,同时将 `i++` 移到 `if` 语句外面,否则会漏掉一些字符。
3. 在 `fun` 函数中,将新的字符串结尾处设为 `j`。
阅读全文