我尝试在switch语句中使用Y和N,但是当我尝试对其进行编译时,出现错误,提示“错误:语句需要整数类型的表达式('char [0]'无效”) 开关(xx){ “
我也收到了一个警告“警告:整数转换的不兼容指针,将'char [1]'传递给'char'类型的参数[-Wint-conversion] sucheZeichen(name,imya); “
int main() {
char name[200];
printf("Please tell me your name:");
fflush(stdin);
scanf("%s", name);
printf("%s has %i letters\n", name, langeZeichne(name));
// frage
int end = 0;
char xx[0];
char imya[1];
do {
fflush(stdin);
printf("would you like to count a letter in %s (Y / N)?\n", name);
scanf("%c", xx);
switch (xx) {
case "Y":
printf("Please enter a letter\n");
scanf("%s", imya);
sucheZeichen(name, imya);
break;
case "N":
printf("Have a nice Day!");
end = 0;
break;
default:
printf("Wrong input\n");
break;
}
}while (end==0);
}
答案 0 :(得分:0)
首先,如果您想将字母读入xx
,请不要使用数组,并且绝对不要使用大小为0的数组。
第二,您的switch
收到的是char[]
而不是char
。
接下来,在case
中使用字符而不是字符串。
此外,根据问题中的信息,sucheZeichen
得到一个char
作为第二个参数(或一个int
),因此xx
成为一个相同的问题。数组也适用于imya
。
此外,我在\n
上添加了scanf
,因此它不会读取换行符。
您的代码应为:
int main() {
char name[200];
printf("Please tell me your name:");
fflush(stdin);
scanf("%s", name);
printf("%s has %i letters\n", name, langeZeichne(name));
// frage
int end = 0;
char xx;
char imya;
do {
fflush(stdin);
printf("would you like to count a letter in %s (Y / N)?\n", name);
scanf("%c\n", &xx);
switch (xx) {
case 'Y':
printf("Please enter a letter\n");
scanf("%c\n", &imya);
sucheZeichen(name, imya);
break;
case 'N':
printf("Have a nice Day!");
end = 0;
break;
default:
printf("Wrong input\n");
break;
}
}while (end==0);
}