C語言scanf的探索

2021-06-27 15:41:10 字數 2105 閱讀 3756

第一次寫帶的,貼上上去的,之後就沒了。。我也是醉了。。。。。

int i,sum=0;

char ch;

printf("輸入多個整數以空格隔開: ");

while(scanf("%d",&i)!=0)

printf("求和的結果為%d\n",sum);

return 0;

若是有錯誤的地方請指點。

1.下面是我探索的**,主要是看看scanf的返回值(不是不想直接看函式原型,喜歡這種先自己探索下,然後再看,比較容易接受,函式原型後面給出)

#include #include /****

*****/

int main()

printf("求和的結果為%d\n",sum);

return 0;

#endif // 0

}

測試scanf的返回值發現:

1.scanf("%d",&i);

輸入輸出

2.scanf("%d %d",&i,&j)

輸入:輸出:

test1:i是輸入資料,格式為"%d"也就是整型  ,a是scanf()函式返回值

這裡按照標準格式輸入,返回值為 1

由以上多個例子可以看出,由於標準格式為"%d",scanf()在讀取時只讀取前面跟格式匹配的數值(著屬於我自己試驗的結果,不能確定是否屬實,所以我下面把標準格式換為「%f」試試)

更多的資料告訴我,確實如此(上面的輸入資料都是開始的 資料滿足標準格式時的試驗,下面我看看開始的資料就不滿足時)

這裡因為是違法輸入,返回值為0,並且,當是違法輸入時,整型時其值為58(這裡不知道是什麼原因)。而浮點型為 0.000000 (這裡我測試過多例子)

接下來我要測試的是多個輸入時 

正常輸入

返回值為 2 ,剛開始看到不知道為啥是2.。。

那接下來看看這個就知道為甚麼是 2 了

我把輸入資料加到三個,然後返回值是 3 偏執的我把輸入資料變為4個,結論很正確返回值為4

那麼違法輸入呢

這裡現象也很明顯,當第乙個資料合法的時候,後面有幾個合法的返回值為幾

當第乙個資料不合法的話,返回值始終為 0 

至此,我做個總結,scanf在接受輸入時,若第乙個資料合法,那麼輸入資料中有幾個合法的,返回值為幾,當資料都不合法或者第乙個資料就不合法,那麼返回值始終為0;

下面我要看空格對scanf的影響

可以看到,基本沒有影響。

所以開始說的那個題目中

while(scanf(「%d」,&i)!=0)是不正確的,應該改為 while(scanf(「%d」,&i)==1),當接受乙個資料時執行一次。

1

intscanf(constchar*format,...);

函式 scanf() 是從

標準輸入流stdio (標準輸入裝置,一般是鍵盤)中讀內容的通用

子程式,可以說明的格式讀入多個字元,並儲存在對應位址的變數中。

其呼叫形式為: scanf("《格式說明字串》",《變數位址》);變數位址要求有效,並且與格式說明的次序一致。

scanf()函式返回成功賦值的資料項數,讀到檔案末尾出錯時則返回eof。如:

1

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

如果a和b都被成功讀入,那麼scanf的返回值就是2

如果只有a被成功讀入,返回值為1

如果a和b都未被成功讀入,返回值為0

如果遇到錯誤或遇到end of file,返回值為

eof。

且返回值為

int型.

空白字元會使scanf()函式在讀操作中略去輸入中的乙個或多個空白字元。

這只是我自己我一次探索,弄完之後感覺再看標準的答案後,會找到很多新的知識,也許知識就應該像這樣來探索式學習吧,直接看標準答案那就沒意思了,不如說背答案。

c語言中的scanf

在c語言的日常應用和學習中 我們時常要用到scanf,但是,作為初學者的我們,在使用scanf的時候時常會出問題。1.在輸入的時候字元要與scanf中的字元一一對應,例如 scanf a的值為 d,b d a,b 我們在輸入的時候就應當輸入如 a的值為1,b 0 注意要一一對應。2.在電腦端連續輸入...

c語言scanf的用法

函式名 scanf 功 能 執行格式化輸入 用 法 int scanf char format argument,scanf 函式是通用終端格式化輸入函式,它從標準輸入裝置 鍵盤 讀取輸入的資訊。可以讀入任何固有型別的資料並自動把數值變換成適當的機內格式。其呼叫格式為 scanf 格式化字串 位址表...

C語言 scanf 總結

問題 對於我這種c語言菜鳥程式設計師來說,一碰到輸入第一想到的就是scanf,正是因為這樣在scanf裡吃了很多虧。好吧,這裡幫自己總結一下 函式原型 1 intscanf constchar format,scanf 函式是格式化輸入函式,它從標準輸入裝置 鍵盤 讀取輸入的資訊。其呼叫格式為 sc...