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

#include <stdio.h> int hhh(char c) { int count = 0; char c[] = {'a','e','i','o','u','y'}; for(int j; j< 6; j++) { if(c ==c[j]) { count++; } } if (count == 0 ) { return 1; } else { return 0; } } int main() { char a[1001],b[1001]; scanf("%[^\n]", a); int len = 0,count = 0; for(int i=0; a[i] != '\0'; i++, len++); for(int i = 0; i < len; i++) { if(hhh(c[i]) == 1) { b[count] = a[i]; count++; } } for(int i = 0; i < count; i++) { putchar(b[i]); } return 0; }
这段代码试图从输入的字符串中删除元音字母(包括'y'),但存在几个问题。

函数 `hhh` 内部定义了一个名为 `c` 的局部数组,与参数 `c` 重名,导致参数被隐藏。同时循环变量 `j` 未初始化,导致不可预测的行为。主函数中调用 `hhh(c[i])` 时使用了未定义的变量 `c`。

- 函数 `hhh` 的参数名 `c` 与内部数组名冲突,导致无法正确访问传入的字符。需要区分参数名和局部数组名。
- 主函数中 `hhh(c[i])` 的 `c` 未定义,应该使用 `a[i]` 来传入当前字符。