(三)、標(biāo)準(zhǔn)輸入輸出語句
Turbo C 2.0標(biāo)準(zhǔn)庫提供了兩個(gè)控制臺(tái)格式化輸入、輸出函數(shù)scanf();和printf();這兩個(gè)函數(shù)可以在標(biāo)準(zhǔn)輸入輸出設(shè)備上以各種不同的格式讀寫數(shù)據(jù)。scanf() 函數(shù)用來從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)上讀數(shù)據(jù),printf()函數(shù)用來向標(biāo)準(zhǔn)輸出設(shè)備(屏幕)寫數(shù)據(jù)。下面詳細(xì)介紹這兩個(gè)函數(shù)的用法。
1.標(biāo)準(zhǔn)輸入語句
scanf()函數(shù)是格式化輸入函數(shù), 它從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤) 讀取輸入的信息。其調(diào)用格式為:
scanf(<格式化字符串>, <地址表>);
格式化字符串包括以下三類不同的字符;
(1).空白字符:空白字符會(huì)使scanf()函數(shù)在讀操作中略去輸入中的一個(gè)或多個(gè)空白字符。
(2).非空白字符:一個(gè)非空白字符會(huì)使scanf()函數(shù)在讀入時(shí)剔除掉與這個(gè)非空白字符相同的字符。
(3).格式化說明符:以%開始,后跟一個(gè)或幾個(gè)規(guī)定字符,用來確定輸出內(nèi)容格式。
Turbo C 2.0提供的輸入格式化規(guī)定符如下:
地址表是需要讀入的所有變量的地址,而不是變量本身,取地址符為'&'。各個(gè)變量的地址之間同,分開。
例如:
scanf(%d,%d,&i,&j);
上例中的scanf()函數(shù)先讀一個(gè)整型數(shù),然后把接著輸入的逗號(hào)剔除掉,最后讀入另一個(gè)整型數(shù)。如果,這一特定字符沒有找到,scanf()函數(shù)就終止。若參數(shù)之間的分隔符為空格,則參數(shù)之間必須輸入一個(gè)或多個(gè)空格。
說明:
(a).對(duì)于各個(gè)變量,類型說明符是什么,輸入格式化說明符就應(yīng)該用對(duì)應(yīng)的類型。否則會(huì)出現(xiàn)程序錯(cuò)誤或輸入數(shù)據(jù)和理想的不一樣。
(b).對(duì)于字符串?dāng)?shù)組或字符串指針變量,由于數(shù)組名和指針變量名本身就是地址,因此使用scanf()函數(shù)時(shí),不需要在它們前面加上&操作符。
char *p,str[20];
scanf(%s, p);
scanf(%s, str);
具體字符串,指針的知識(shí)以后再介紹。
©.可以在格式化字符串中的%各格式化規(guī)定符之間加入一個(gè)整數(shù),表示任何讀操作中的最大位數(shù)。
如上例中若規(guī)定只能輸入10字符給字符串指針p,則第一條scanf()函數(shù)語句變?yōu)?
scanf(%10s, p);
程序運(yùn)行時(shí)一旦輸入字符個(gè)數(shù)大于10, p就不再繼續(xù)讀入。
實(shí)際使用scanf()函數(shù)時(shí)存在一個(gè)問題, 下面舉例進(jìn)行說明:
當(dāng)使用多個(gè)scanf()函數(shù)連續(xù)給多個(gè)字符變量輸入時(shí), 例如:
char c1, c2;
scanf(%c, &c1);
scanf(%c, &c2);
運(yùn)行該程序,輸入一個(gè)字符A后回車(要完成輸入必須回車),在執(zhí)行scanf(%c,&c1)時(shí),給變量c1賦值A(chǔ),但回車符仍然留在緩沖區(qū)內(nèi),執(zhí)行輸入語句scanf(%c,&c2)時(shí),變量c2輸出的是一空行,如果輸入AB后回車,那么實(shí)際存入變量里的結(jié)果為c1為A,c2為B。
要解決以上問題, 可以在輸入函數(shù)前加入清除函數(shù)fflush();(這個(gè)函數(shù)的使用方法將在本節(jié)最后講述)。
(d).當(dāng)在格式說明符之間加入'*'時(shí),表示跳過輸入,例如:
scanf(%3*d,&a);
當(dāng)輸入12345的時(shí)候,前面三個(gè)字符跳過去不考慮,最終變量a的值為45。
相關(guān)推薦:計(jì)算機(jī)等級(jí)考試二級(jí)C語言教程匯總計(jì)算機(jī)等級(jí)考試二級(jí)C語言常見知識(shí)點(diǎn)總結(jié)
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |