这可能是一个愚蠢的问题,但我是C的新手,我意识到如果你想使用scanf
,你必须给它一个你正在扫描的类型。但是如果你不知道用户会输入什么,你怎么能给它一个明确的类型呢?
例如,我希望用户能够提供各种命令,例如
read file.txt
write file2.txt
delete 2
delete 4
quit
我开始做
printf("\nPlease enter a command (print, delete, write, quit): ");
scanf("%s", &str); //but I realized here how can I differentiate it?
//i won't know what the user will type beforehand so I can't give a definite type.
答案 0 :(得分:2)
每个列出的输入的scanf()
的结果将只是第一个单词(最多但不包括空格)。建议使用fgets()
将整个命令行输入到本地缓冲区,然后从本地缓冲区解析数据字段,可能使用strtok()
或strchr()
或...
答案 1 :(得分:1)
你可以尝试这样的事情吗?
int option;
printf("\nPlease enter a command (1 for print, 2 for delete, 3 for write, 4 for quit): ");
然后读取用户输入号
scanf("%d", &option);
以后可以在'选项'上使用开关语句。处理方式不同
答案 2 :(得分:0)
我建议使用类似交换机的解决方案。 switch
不支持char *
,所以不需要支持。
int x;
char buff[MAX_LEN], buff1[MAX_LEN];
scanf("%s", buff);
if (!strcmp(buff, "read")) {
scanf("%s", buff1);
//...
} else if (!strcmp(buff, "delete")) {
scanf("%d", &x);
//...
} else if (!strcmp(buff, "quit")) {
//...
exit(0);
} else {
//Error handle
}