如何在C中读取各种类型的用户输入?

时间:2015-04-08 00:11:17

标签: c

这可能是一个愚蠢的问题,但我是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.

3 个答案:

答案 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
}