2016-03-14 36 views
0

如何使用scanf() IN C接受來自命令行的多個輸入?我試圖在同一行上得到一個名字,後面跟着一個用戶的任意數量的值。我知道scanf()函數是空格/新行分隔。接受來自命令行的輸入C

例如用戶輸入: 狗2 5 1

我知道scanf()會讀「狗」,但我怎麼得到它的閱讀下列值。我不能使用scanf("%s, %d, %d, %d", a, b, c, d),因爲可能會輸入多於或少於3個值。

+0

您是否知道在輸入過程中隨時會輸入多少個數值? – paddy

+2

一個簡單的選項就是嘗試讀取最大輸入數量並檢查'scanf'的返回值以查看讀取的輸入數量。如果最大數量已知並固定爲較小值,則工作良好。否則,只要在循環中一直調用'scanf(「%d」,#)「,直到它無法匹配。根據您的全部要求,可能會有更好的選擇(例如,使用「scanf」以外的內容)。 – kaylum

回答

0

您可以使用fgets()將整行讀入字符串緩衝區。

然後用strtok()用空格分開。

1

您可以將參數傳遞給主函數本身。主要的原型是

int main(int argc, char* argv[]); 

你可以用它來讀取命令行參數。 argc給出了參數的總數(用空格分隔),argv是一個保存它的向量。

例如用戶將進入:./yourExecutable dog 2 5 1 在這種情況下的參數的數目是5(包括可執行文件的名稱)和argv[0]將是您的可執行程序,的argv [1]將是您的"dog"等。