在Switch语句中使用字母
我尝试在switch语句中使用Y和N,但当我尝试编译它时,我得到了一个错误,比如“error:statement需要整数类型的表达式('char[0]”无效) 开关(xx){ " 我还收到一条警告“警告:指向整数转换的不兼容指针将'char[1]'传递给'char'[-Wint conversion]类型的参数” 苏哲哲贞(姓名,imya),在Switch语句中使用字母,c,compiler-errors,char,switch-statement,warnings,C,Compiler Errors,Char,Switch Statement,Warnings,我尝试在switch语句中使用Y和N,但当我尝试编译它时,我得到了一个错误,比如“error:statement需要整数类型的表达式('char[0]”无效) 开关(xx){ " 我还收到一条警告“警告:指向整数转换的不兼容指针将'char[1]'传递给'char'[-Wint conversion]类型的参数” 苏哲哲贞(姓名,imya), }首先,如果您想将字母读入xx中,请不要使用数组,并且绝对不要使用大小为0的数组 其次,您的开关接收一个char[]而不是char 接下来,在案例中s使用
}首先,如果您想将字母读入
xx
中,请不要使用数组,并且绝对不要使用大小为0的数组
其次,您的开关
接收一个char[]
而不是char
接下来,在案例中
s使用字符而不是字符串
此外,根据问题中的信息,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);
}
使用单引号。但是您还有一些问题,例如大小为零的数组、没有空间容纳
\0
的字符串、fflush(stdin)
等等……您没有使用字母(字符)。您正在使用字符串。顺便说一句:指向传递的整数转换的不兼容指针
:此警告几乎应始终被视为错误。您的编译器应该警告您。听一听,如果你没有看到任何东西,打开错误报告代码>是错误的。(你不能有一个0事物的数组——这意味着什么?scanf(“%c”,xx)代码>是错误的。(好吧,它与您错误的xx
声明相匹配,有点像,但它不是您想要的。)如果您希望xx
成为一个字符,那么将其声明为一个:char xx
。然后,当您在switch
语句中使用它时,大小写标签也必须是字符:'Y'
,'N'
。
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);
}