2017-05-25 113 views
0

當調用scanf()時,我輸入Ctrl-D(EOF),然後忽略下一個scanf。當我調用scanf()時,我輸入Ctrl-D(EOF),然後忽略下一個scanf

#include <stdio.h> 

int main() 
{ 
    int input; 
    scanf("%d", &input);//I press Ctrl-D when this line 
    scanf("%d", &input);//this line just passed. not read my input. why? 
    return 0; 

} 

我想獲得與scanf()第二次調用輸入。 什麼是問題?

+1

你預期會發生什麼 - 它會嘗試讀取過去的EOF? – InternetAussie

+0

@InternetAussie我不想讀過去的EOF,我只是讀了stdin。 –

+2

@임근영'EOF'代表** E ** nd ** O ** f ** F ** ile,即輸入流的結束,意味着沒有更多的數據要從stdin中讀取'。 –

回答

0

看來你的代碼還行。唯一的想法是記得在兩個輸入號碼的末尾按「return」。我以「更好」的方式重寫你的代碼:

#include <stdio.h> 
int main(){ 

int input1,input2; 
printf("Digit the first number: "); 
scanf("%i", &input1);//Press return at the end 
printf("Digit the second number: "); 
scanf("%i", &input2);//Press return at the end 
printf("input1:%i\tinput2:%i\n",input1,input2); 
return 0; 
}