第一次寫帶的,貼上上去的,之後就沒了。。我也是醉了。。。。。
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...