2011-04-22 144 views
5
#include <cstdio> 

int main() 
{ 
    int i; 
    printf("%d", scanf("%d", &i)); 
} 

任何數字I輸入輸出奇怪,我得到的輸出:使用scanf函數

1 

爲什麼會這樣呢?

+0

''是一個C標準頭。 – Puppy 2011-04-22 10:37:08

+2

@ DeadMG-你很荒謬。 'C標準庫中的每個頭文件都以不同的名稱包含在C++標準庫中,通過刪除.h並在開始處添加'c'來生成。問題是C和C++都是特定的。 – Sadique 2011-04-22 11:41:03

回答

11

成功時,該scanf功能

返回成功讀取的項目數。

這個計數可以匹配讀數或更少的預期數量,甚至爲零,如果匹配失敗的情況。 如果在成功讀取任何數據之前輸入失敗,則返回EOF

試試這個還有:

printf("%d",scanf("%d%d",&i,&i));

+0

OP可能需要輸入的數字,它將在scanf返回後的'i'中。 – 2011-04-22 09:36:54

+2

不,我覺得他不知道'scanf'究竟返回了什麼。 – Sadique 2011-04-22 09:37:26

+0

哦,當然 - 你也在那裏! – 2011-04-22 09:38:05

4

你輸出的scanf的結果,這是不是你輸入號碼,但被成功讀取的項目數量。您輸入的號碼存儲在i中。爲了輸出它,你會寫一個額外的行:

#include <cstdio> 

int main() 
{ 
    int i; 
    if (scanf("%d",&i) == 1) 
     printf("%d", i); 
} 
+0

S.O.中太多未驗證的輸入。問題,也不希望它在答案中! - * *更好* if(scanf(「%d」,&i)== 1)printf(「%d \ n」,i);' – 2011-04-22 09:38:39

+0

根據您的建議進行編輯。 – Tommy 2011-04-22 11:55:22

+0

那麼,我最好給你+1然後;-)。乾杯。 – 2011-04-22 15:10:47

0

scanf()返回讀取的項目數,當它成功。這裏它的讀數只有一個數字,因此每次輸出都是1,不管數字是多少。