Online Compiler 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; 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++; } printf("%s",c); return 0; }
这段代码试图从输入中删除所有元音字母,但存在几个问题。

代码的主要流程是:读取输入到数组c中,然后调用clear函数删除元音字母,最后打印结果。但clear函数被定义了却没有在main中被调用,所以实际上没有进行删除操作。

- 在main函数中,你定义了clear函数但没有调用它。需要在printf之前调用clear(c)来执行删除操作。
- clear函数中,你计算了数组大小并遍历,但最后没有在字符串末尾添加'\0'结束符。删除元音后,数组末尾需要手动设置结束符,否则printf打印时会越界。