在 Switch 语句中使用字母
using letters in a Switch statement
我尝试在 switch 语句中使用 Y 和 N,但是当我尝试编译它时出现错误,内容是“错误:语句需要整数类型的表达式('char [0]' 无效)
开关(xx){
“
我也得到了一个警告“警告:不兼容的指向整数转换的指针将 'char [1]' 传递给 'char' 类型的参数 [-Wint-conversion]
sucheZechen(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);
}
首先,如果要将字母读入 xx
,请不要使用数组,绝对 不是大小为 0 的数组。
其次,您的 switch
收到 char[]
而不是 char
。
接下来,在 case
中使用字符而不是字符串。
此外,根据问题中的信息,sucheZeichen
得到一个 char
作为第二个参数(或一个 int
),所以与 xx
同样的问题作为数组也适用于 imya
。
此外,我在 scanf
中添加了 \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);
}
我尝试在 switch 语句中使用 Y 和 N,但是当我尝试编译它时出现错误,内容是“错误:语句需要整数类型的表达式('char [0]' 无效) 开关(xx){ “
我也得到了一个警告“警告:不兼容的指向整数转换的指针将 'char [1]' 传递给 'char' 类型的参数 [-Wint-conversion] sucheZechen(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);
}
首先,如果要将字母读入 xx
,请不要使用数组,绝对 不是大小为 0 的数组。
其次,您的 switch
收到 char[]
而不是 char
。
接下来,在 case
中使用字符而不是字符串。
此外,根据问题中的信息,sucheZeichen
得到一个 char
作为第二个参数(或一个 int
),所以与 xx
同样的问题作为数组也适用于 imya
。
此外,我在 scanf
中添加了 \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);
}