簡體   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