我有一個代碼在這裏有一些不必要的行爲時,輸入字符串與空格。例如print illegal_argument
。當有多個單詞輸入時,我希望它只註冊第一個單詞。Scanf輸入繼續到下一個scanf
目前發生的是:
[email protected] $ print 0
Enter router ID for information > ID: 0, flag: f7, model_length: 13, model: D-Link y6000
它註冊的第一print
在命令循環的比較。但不是scanf
提示用戶輸入下一個輸入,而是忽略該輸入,並且從前一個scanf
獲取用戶輸入的第二個單詞/數字。
我希望發生的是:
[email protected] $ print 0
Enter router ID for information > 0
ID: 0, flag: f7, model_length: 13, model: D-link y6000.
一切都會按計劃,否則,但我不知道是否有做這個簡單的方法。我試過使用Strtok,沒有多少運氣。
char input[256];
printf("%[email protected] $ ", getenv("USER"));
scanf("%s", input);
if(strcmp(input, "print") == 0) {
print();
}
上面的代碼是我如何從用戶獲得輸入。
任何人有任何想法?
當你想要整個輸入行時,不要使用'scanf',而是使用'fgets'。 –
@OlafDietsche嘗試'fgets(input,256,stdin)'不起作用,除非我做錯了什麼。嘗試'$ print'產生':command not found.'。 –
@Christian S'fgets(輸入,256,stdin)'工作。代碼中的其他內容也需要更改。請參閱http://stackoverflow.com/questions/2693776/removing-trailing-newline-character-from-fgets-input – chux