2012-11-04 17 views
0

當我嘗試使用scanf關於C和Eclipse - scanf函數

int main() { 

    int x1,x2,x3,y1,y2,y3; 

    printf("Enter 3 pairs of positive integers separated by spaces:\n"); 

    scanf("%u %u %u %u %u %u", &x1, &y1, &x2, &y2, &x3, &y3); 

我得到的程序運行,比如爲輸入。 然後我把輸入,但它打印「輸入3對...」,什麼都不做

爲什麼呢?

+0

當你說「什麼也不做」,你的意思是什麼?輸入6位數字後它會掛起嗎?還是在它進入之前崩潰?只是要清楚:'scanf'需要來自標準輸入的輸入,所以你必須實際輸入這6個數字才能讓程序進行。 – amaurea

回答

1

也許你必須輸入數值;這是scanf的目標。

順便說一句,您的程序包含一個未定義的行爲:%uint指針不匹配。在printf中使用%d/%i格式。另一種解決方案是聲明變量爲unsigned int類型,以與printf格式相匹配。此外,您的部分源代碼丟失。

+0

%d或帶符號整數的%i。 %u代表無符號:) –

+0

這就是我想說的......它在哪裏不清楚? – md5

+0

嗯@Kirilenko,你形成句子的方式有點奇怪。 :-)但正確none-less-less –

1

%u是無符號整數。 %d%i是有符號整數。請在C中注意這些quirksgotchas。小心強制更正格式說明符。

+0

我同意你應該小心'%d'與'%u',但我不認爲這是真正的問題在這裏(一個實現將不得不非常奇怪行爲不同這些情況下,只要不我認爲問題在於用戶不理解程序正在等待他的輸入,這就是爲什麼它沒有做任何事情。 – amaurea

0

您可能會發現使用fgets而不是scanf更方便。 eclipse終端有點時髦。

請參閱本post