繁体   English   中英

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

[英]How to read user input of various types in C?

这可能是一个愚蠢的问题,但是我对C还是scanf ,所以我意识到,如果要使用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.

每个列出的输入的scanf()结果将仅是第一个单词(最多但不包括空格)。 建议使用fgets()将整个命令行输入到本地缓冲区中,然后从本地缓冲区中解析数据字段,也许使用strtok()strchr()或...

您可以尝试这样的方法吗?

int option;
printf("\nPlease enter a command (1 for print, 2 for delete, 3 for write, 4 for quit): ");

然后读取用户输入的号码

scanf("%d", &option);

您以后可以在'option'上使用switch语句进行不同的处理

我建议使用类似开关的解决方案。 switch不支持char * ,所以需要else-if。

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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM