我试图以字符串的形式接受用户输入,然后在交换机中使用它,但它总是使用默认情况而不是我输入的字符串的情况。出于测试的目的,我只输入字母y:
char thing[1];
scanf("%s",thing);
switch(thing){
case 'y' :
printf("yup\n");
break;
default :
printf("nope\n");
}
答案 0 :(得分:1)
这个char数组有一个元素。你的代码在这里为char
而哭泣。您可以使用char
做得很好,然后获取输入并进行检查。同样在switch
中,您使用的指针值与char
之类的y
不匹配。去默认。
char thing;
if(scanf("%c",&thing) != 1){
// error
}
..
如果你想使用strcmp
,请注意你需要使用null终止的char数组。
char thing[3];
if(scanf("%2s",thing)!= 1){
// error
}
if(strcmp(thing,"y") == 0){
printf("yup\n");
}
else{
printf("nope\n");
}
此外,您可以使用您的代码完成此操作 - 但由于您无法将其用作null terminated char array
或许多标准字符串处理功能所需的字符串,因此无效。
char thing[1];
if(scanf("%c",&thing[0]) != 1){
// error
}
switch(thing[0]){
case 'y' :
printf("yup\n");
break;
default :
printf("nope\n");
}