我陷入了一件非常尴尬的事情。代码如下:
#include <stdio.h>
#include <stdlib.h>
void processCommand(){
char *c = malloc(sizeof(char) * 128);
scanf("%s", c);
switch(*c){
case '!':
printf("Action");
break;
case '?':
printf("Question");
break;
default:
printf("Unknown Action");
break;
}
}
所以我想要的是,如果我输入的第一个字符与 !
不同或?
,它应该只是说这是一个未知的 Action 。所以它适用于输入其他字符,但每次我输入空格/制表符/什么都没有时,它不会执行任何操作?
最佳答案
正如其他用户指出的:scanf ignores whitespaces, fgets doesn't.
void processCommand(){
char *c = malloc(sizeof(char) * 128);
fgets (c, sizeof(char) * 128, stdin);
switch(*c){
case '!':
printf("Action");
break;
case '?':
printf("Question");
break;
default:
printf("Unknown Action");
break;
}
}
关于C 开关默认情况不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44901966/