青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-145  評論-173  文章-70  trackbacks-0
當讀入發生錯誤,或者是到達文件尾,scanf就會返回EOF這個宏的值。
while(scanf("%d%d",&a,&b)!=EOF),這個語句就是說,當讀取沒有到達文件尾的話,就不停的讀取。
scanf 函數的返回值反映的是按照指定的格式符正確讀入的數據的個數。如果輸入數據與指定格式不符,則會產生輸入錯誤。遇到輸入錯誤,scanf函數會立即終止,返回已經成功讀取的數據的個數。所以,通過scanf函數的返回值和指定輸入數據的個數(由格式符決定)的比較,可以判斷數據輸入是否成功。

scanf("%d%d",&a,&b); 這個語句會去讀兩個整型到a, b。如果讀取成功,應該返回2。就是它成功讀取變量的個數。


論壇上很多人對scanf的不太了解,導致程序出錯,我想把scanf的具體用法貼出來,希望大家可以共同進步,有什么不對的地方可以提出來。
int scanf(char *format,...);
這應該是scanf的標準形式。先說說關于他的返回值的問題。
庫函數幾乎都是有返回值的,有些人可能很奇怪,怎么很少人用過scanf的返回值呢?
scanf會返回成功接收到的變量數量的值。比如scanf("%d",&j"),與scanf("%d=",&j),如果接受成功的話返回值都是1
我用如下語句作了測試
#include <stdio.h>
int main (){
    int j;
    printf ("%d",scanf("%d\n",&j));
    return 0;
}
如果你開始就輸入回車,程序會繼續等待你輸入,因為在輸入數字的時候,scanf會跳過空白字符。(the c programming language 上說,scanf實際上是用getchar()接受由數字組成的字符串,再轉換成數字)
如果我輸入ctrl-z(unix上是ctrl-d)則會返回-1(隨編譯器而定).這實際上就是常量EOF的值,也就是所謂的返回eof
如果我鍵入的不是數字返回值就是0。但是如果我輸入浮點數,又會怎么樣呢?
我舉的例子中同樣會返回1,但是緩沖區會留下垃圾,如果是scanf("%d%d",&a,&b);則會出錯。
這是可以使用一個庫函數fflush(stdin)來清除緩沖。不過貌似雨中飛燕大姐說這個用法是非標準的。K&R,只是說行為沒有定義,但我們可以使用while((c=getchar())!='\n'&&c!=EOF);同樣可以清除后面的垃圾
scanf的格式匹配還是比較簡單,一定要記住的就是普通變量一定要加上&,否則編譯器無法檢測錯誤,但運行肯定會段錯誤。
    ┏━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
    ┃ 代  碼 │             意                          義            
    ┠────┼────────────────────────────┨
    ┃   %a   │讀浮點值(僅適用于 C99)                                 
    ┃   %A   │讀浮點值(僅適用于 C99)                                 
    ┃   %c   │讀單字符                                                
    ┃   %d   │讀十進制整數                                            
    ┃   %i   │讀十進制、八進制、十六進制整數                          
    ┃   %e   │讀浮點數                                                
    ┃   %E   │讀浮點數                                                
    ┃   %f   │讀浮點數                                                
    ┃   %F   │讀浮點數(僅適用于 C99)                                 
    ┃   %g   │讀浮點數                                                
    ┃   %G   │讀浮點數                                                
    ┃   %o   │讀八進制數                                             
    ┃   %s   │讀字符串                                                
    ┃   %x   │讀十六進制數                                            
    ┃   %X   │讀十六進制數                                            
    ┃   %p   │讀指針值                                                
    ┃   %n   │至此已讀入值的等價字符數                                
    ┃   %u   │讀無符號十進制整數                                      
    ┃  %[ ]  │掃描字符集合                                            
    ┃   %%   │讀 % 符號(百分號)                                       
    ┗━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
前面都很簡單,%p,%n很少用到,跳過。要輸入%必須要在前面再加一個%,
重點來談談%s和%[]。%s是讀入一個數組,他與gets的區別就在于%s會以任何的空字符結束,而gets是回車結束。
同樣%s前可以加數字,表示只讀多少個。
ANSI C 標準向 scanf() 增加了一種新特性,稱為掃描集(scanset)。 掃描集定義一個字符集合,可由 scanf() 讀入其中允許的字符并賦給對應字符數組。 掃描集合由一對方括號中的一串字符定義,左方括號前必須綴以百分號。 例如,以下的掃描集使 scanf() 讀入字符 A、B 和 C:
    %[ABC]
使用掃描集時,scanf() 連續吃進集合中的字符并放入對應的字符數組,直到發現不在集合中的字符為止(即掃描集僅讀匹配的字符)。返回時,數組中放置以 null 結尾、由讀入字符組成的字符串。
對于許多實現來說,用連字符可以說明一個范圍。 例如,以下掃描集使 scanf() 接受字母 A 到 Z:
%[A-Z]
重要的是要注意掃描集是區分大小寫的。因此,希望掃描大、小寫字符時,應該分別說明大、小寫字母。
對于%[]還可以用^+任意字符(包括eof)來結束字符串的輸入。比如%[^EOF]就是直到有EOF輸入,字符串才中止。
但一定要記住就是c語言是緩沖輸入,即使你%[^a],再你輸入回車之前輸入多少的a都是不可能結束的。
%s的輸入會跳過空白字符,但是%c則不會。
這也就是
scanf("%d",&h);
scanf("%c",&c);
如果這寫的話,變量c放的一定是回車。
如果想實現這種輸入,可以在兩個語句之間加入一個getchar(),他可以吃掉這個回車,
也可用scanf("%d %c",&h,&c);來做,再輸入數字后加一個空格。就可以了
但千萬別用scanf("%d\n",&h)!!!!!!!!k&r說的十分清楚,任何非格式化的字符都需要完全匹配。
意味著,只有輸入數字后面再加\n才是合法的。
還有就是*加在任何項的前面表示該項不符值,別的就沒什么好說的了
posted on 2009-11-27 21:21 deercoder 閱讀(1062) 評論(0)  編輯 收藏 引用 所屬分類: C/C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精彩视频| 亚洲视频综合在线| 亚洲精品一区二区三区99| 国产精品综合| 国产日韩专区在线| 国产一区二区剧情av在线| 韩日成人av| 亚洲国产精品成人va在线观看| 国产在线成人| 在线看成人片| 中文日韩在线视频| 久久99伊人| 亚洲第一福利在线观看| 免费亚洲电影在线观看| 欧美jizz19hd性欧美| 亚洲黄色性网站| 亚洲综合日韩在线| 久久精品主播| 欧美精品福利在线| 国产一区日韩欧美| 国产一区视频在线观看免费| 亚洲精品免费观看| 欧美一二三区在线观看| 久久一综合视频| 99亚洲一区二区| 久久久久久91香蕉国产| 欧美日韩一级黄| 伊人狠狠色丁香综合尤物| 一区电影在线观看| 久久久亚洲一区| 一区二区三区精品久久久| 久久精品视频免费| 国产精品乱码一区二三区小蝌蚪 | 国产精品一卡二| 亚洲国产裸拍裸体视频在线观看乱了中文| 99热在这里有精品免费| 午夜精品美女久久久久av福利| 欧美不卡在线视频| 亚洲免费视频成人| 欧美日韩精品免费观看| 狠狠久久婷婷| 性欧美办公室18xxxxhd| 一区二区国产精品| 欧美aⅴ99久久黑人专区| 国产婷婷精品| 西瓜成人精品人成网站| 久久中文字幕一区| 亚洲国内精品| 最新国产成人在线观看| 久久一区二区三区av| 亚洲图片欧洲图片av| 欧美激情精品久久久久久蜜臀 | 蜜桃av一区二区三区| 国产一区二区激情| 欧美一级精品大片| 一区二区久久久久| 欧美日韩亚洲天堂| 亚洲一级免费视频| 9色国产精品| 欧美精品一区二区三区在线播放| 伊人影院久久| 免费观看成人www动漫视频| 欧美在线观看一区二区| 国产一区二区日韩精品欧美精品| 午夜精品久久久久久久蜜桃app| 中文亚洲视频在线| 国产精品美腿一区在线看 | 亚洲电影第1页| 麻豆av福利av久久av| 久久米奇亚洲| 亚洲高清不卡| 欧美国产日本| 欧美精品在线观看91| 在线亚洲精品| 亚洲婷婷在线| 国内精品福利| 欧美福利影院| 欧美日韩一区二区在线| 先锋影院在线亚洲| 久久午夜激情| 亚洲视频电影图片偷拍一区| 亚洲欧美国产视频| 亚洲福利电影| 欧美高清视频在线 | 久久丁香综合五月国产三级网站| 国产亚洲一本大道中文在线| 毛片一区二区| 欧美日韩亚洲天堂| 久久综合色8888| 欧美日本韩国| 久久人人爽人人爽| 欧美日韩成人综合在线一区二区| 亚洲欧美成aⅴ人在线观看| 香蕉久久久久久久av网站| 国产麻豆一精品一av一免费| 亚洲影院免费观看| 久久大逼视频| 亚洲一区二区精品在线| 久久免费精品视频| 亚洲三级免费电影| 午夜精品免费视频| 国产精品久久久久久久久久免费看| 久久精品最新地址| 国产精品久久久久一区二区| 性亚洲最疯狂xxxx高清| 久久综合色一综合色88| 日韩天堂av| 欧美一区二区三区另类| 日韩一区二区福利| 久久国产99| 亚洲欧美激情视频| 欧美第十八页| 老司机午夜精品视频| 国产精品久久久久国产a级| 免费91麻豆精品国产自产在线观看| 欧美日韩精品一区二区三区四区| 久久精品在线| 国产精品国产三级国产普通话99| 欧美成人午夜剧场免费观看| 国产欧美日韩一区| 亚洲免费观看高清在线观看 | 91久久国产综合久久91精品网站| 国产日韩欧美视频| 亚洲无毛电影| 亚洲视频1区| 欧美精品一区二区三区蜜桃 | 久久精品99国产精品| 欧美性猛交一区二区三区精品| 欧美激情视频免费观看| 在线播放视频一区| 久久久999| 蜜臀久久久99精品久久久久久| 国产一区二区看久久| 欧美影视一区| 久久久久国色av免费观看性色| 国产精品拍天天在线| 亚洲午夜精品久久久久久浪潮| 亚洲一区二区三区四区视频| 欧美日韩喷水| 一本久久综合| 午夜国产不卡在线观看视频| 国产精品久久久久99| 午夜精品一区二区三区在线播放| 午夜影院日韩| 激情综合五月天| 免费看黄裸体一级大秀欧美| 亚洲国产日韩欧美| 在线午夜精品| 国产精品日本| 久久精品99久久香蕉国产色戒| 欧美亚洲综合久久| 在线免费观看成人网| 欧美成人在线免费观看| 亚洲精品国精品久久99热一| 亚洲网站在线观看| 国产亚洲精品久| 乱中年女人伦av一区二区| 亚洲国产精品久久久久秋霞影院 | 亚洲国产精品国自产拍av秋霞| 猛干欧美女孩| 亚洲精选视频在线| 亚洲欧美第一页| 国产精品热久久久久夜色精品三区| 亚洲欧美日本国产专区一区| 久久影音先锋| 一区二区欧美日韩视频| 国产女主播一区二区三区| 久久久精品一区| 亚洲毛片一区| 久久综合给合久久狠狠色| 亚洲精品在线视频| 国产精品久线观看视频| 久久综合久久综合九色| 在线一区二区三区做爰视频网站| 久久精品道一区二区三区| 亚洲国产日韩欧美在线99| 欧美性猛交99久久久久99按摩| 久久久女女女女999久久| 亚洲激情视频网站| 久久久www| 亚洲性感激情| 亚洲国产精品久久久久秋霞不卡| 欧美日韩激情网| 久久久久久久国产| 亚洲精品久久久久久久久久久久| 久久av在线| 亚洲午夜在线观看| 亚洲欧洲在线视频| 韩日视频一区| 国产精品热久久久久夜色精品三区 | 午夜精品久久久久久久蜜桃app | 国产性猛交xxxx免费看久久| 欧美国产日韩一区二区| 性做久久久久久久免费看| 9i看片成人免费高清| 亚洲国产精品久久久久| 欧美 日韩 国产 一区| 久久久久国产精品一区二区| 午夜精品一区二区在线观看| 亚洲私拍自拍|