我陷入了一个非常尴尬的境地。这是代码:
#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;
}
}
所以我想要的是,如果我输入的第一个字符不同于!
或?
,那么它应该说它是一个未知的动作。所以它适用于键入其他字符,但每次我键入一个空格/制表符/什么都没有,它什么都不做?
答案 0 :(得分:1)
正如其他用户指出: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;
}
}