Онлайн компилятор C

#include <stdio.h> int isvovel(char c[]){ char *vovel="aeiouyAEIOUY"; while(*vovel){ if(c==*vovel){ return 1; } vovel++; } return 0; } int sum(char c[]){ int i=1001,sum=0; while(c[i]!='\0'){ sum++; i++; } return sum; } void clear(char c[]){ int size=sum(c),t=0; for(int i=0;c[i]!='\0';i++){ if(!isvovel(c[i])){ c[t]=c[i]; t++; } } } int main() { char c[1001]; char a; int i=0; while((a=getchar)!=EOF){ c[i]=a; i++; } m[sum]='\0'; printf("%s",c); return 0; }
这段代码试图从输入中读取字符,然后删除所有元音字母并输出结果。但代码中有几处错误。

- 函数 `isvovel` 的参数类型是 `char c[]`,但调用时传入了 `c[i]`(一个字符),类型不匹配。函数内部用 `c==*vovel` 比较,但 `c` 是数组名(指针),不是单个字符,所以比较逻辑错误。

- 函数 `sum` 的初始值 `i=1001` 不合理,应该从0开始遍历字符串。而且 `sum` 变量名与函数名冲突。

- `main` 函数中 `while((a=getchar)!=EOF)` 缺少括号,应该是 `getchar()`。另外变量 `m` 未定义,`m[sum]='\0'` 这一行意图不明,可能是想给字符串结尾加空字符,但写法错误。

- 调用 `clear` 函数后没有输出处理后的字符串,而是直接输出了原始 `c`。

- 提示:
  - 检查 `isvovel` 函数的参数类型和调用方式,确保能正确判断单个字符是否为元音。
  - 检查 `main` 函数中读取输入和添加字符串结束符的逻辑,以及是否调用了 `clear` 函数。