[英]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.