在线编译器 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=0,sum=0; while(c[i]!='\0'){ sum++; i++; } return sum; } void clear(char c[]){ int size=sum(c),t=0; char result[1001]={0}; for(int i=0;i<size;i++){ if(!isvovel(c[i])){ result[t]=c[i]; t++; } } } int main() { char c[1001]; char a; int i=0; while((a=getchar())!=EOF){ c[i]=a; i++; } isvovel(c); printf("%s",c); return 0; }
这段代码试图从输入中删除元音字母,但存在几个问题。代码中定义了一个 `clear` 函数来执行删除操作,但 `main` 函数里并没有调用它,而是直接打印了原始输入。

- `main` 函数中调用了 `isvovel(c)`,但 `isvovel` 只检查单个字符,这里传入整个字符串会导致错误行为,而且它的返回值没有被使用。
- `clear` 函数创建了 `result` 数组来存放删除元音后的结果,但没有将这个结果传回给调用者,也没有打印它,所以实际上删除操作没有生效。
- 在 `main` 中,读取字符后没有给字符串末尾添加空字符 `'\0'`,这可能导致后续字符串函数(如 `sum`)访问越界。