2012-04-17 40 views
1

我想從命令行獲取所有輸入並將其放入鏈表中。 命令行的數字是這種格式0-1 2-3 4-9 ETCC 這裏是我做的存儲一對數字的兩個變量:繼續爲命令行中的所有輸入執行scanf。 C程序

scanf("%d-%d", &a, &b); 

現在,這scanf函數聲明在一個循環內,我的問題是:循環的條件是什麼? 我想繼續做scanf直到所有輸入完成。

在此先感謝。

+1

你能定義「直到所有輸入完成」嗎?如果你回答這個問題,你會得到你的循環條件 – 2012-04-17 10:17:57

回答

3

scanf即使不是臭名昭着的特性,也會在讀取非字符串數據(例如,int)時將數據保留在輸入緩衝區中。退房時間:Leave data in input buffer

試試這個:

do 
{ 
    int x = scanf("%d-%d", &a, &b); 
}while ((x != EOF) && (getchar() != '\n')); 

你需要比較EOF scanf輸出。最重要的是,您需要在輸入緩衝區中清除scanf左邊的'\n'

+0

這個EOF是如何到達的?如果我每行輸入一對數字並在我想停止任何事情時不停地點擊換行符。 – Tudor 2012-04-17 10:12:27

+1

@Tudor'Ctrl-D'? – 2012-04-17 10:21:31

+0

@Tudor,請再次與此。 – 2012-04-17 10:28:03