最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C語言scanf函數(shù)的使用心得

2021-10-07 21:52 作者:秋名山西  | 我要投稿

在今天的c語言學(xué)習(xí)中,在對(duì)scanf函數(shù)的使用上,發(fā)現(xiàn)了一個(gè)知識(shí)盲區(qū),在此加以記錄,以便日后查看。

scanf函數(shù)屬于阻塞型函數(shù),倘若你輸入的數(shù)據(jù)個(gè)數(shù)不滿足要求,則會(huì)一直阻塞,直到鍵盤輸入足夠的數(shù)據(jù)為止。用戶通過鍵盤輸入的內(nèi)容會(huì)被存儲(chǔ)在鍵盤輸入緩沖區(qū),scanf函數(shù)會(huì)根據(jù)自身格式控制字符(例如%d、%c等)取出鍵盤輸入緩沖區(qū)中符合要求的數(shù)據(jù),并將對(duì)應(yīng)的為止置零。倘若讀取到不符合要求的數(shù)據(jù),會(huì)將其保留原樣。只要輸入緩沖區(qū)中還有數(shù)據(jù),scanf函數(shù)就不會(huì)要求鍵盤繼續(xù)輸入數(shù)據(jù)。例如如下代碼:

當(dāng)我們輸入五個(gè)整形數(shù)據(jù)時(shí),程序能夠正常輸出鍵盤輸入的數(shù)據(jù)。但是當(dāng)我們輸入:

12 b 31 56 b,對(duì)應(yīng)的輸出為:

返回值為1

返回值為0

返回值為0

返回值為0

返回值為0

您剛剛輸入的是:12

您剛剛輸入的是:0

您剛剛輸入的是:0

您剛剛輸入的是:0

您剛剛輸入的是:0

,可以看出,輸出結(jié)果是不對(duì)的,這是什么原因呢?由輸出結(jié)果我們可以看出,程序在將輸入的第一個(gè)數(shù)據(jù)成功賦值后,后面全部賦值失敗。這是因?yàn)椋?dāng)scanf函數(shù)成功讀取第一個(gè)數(shù)據(jù)后,開始去讀第二個(gè)數(shù)據(jù),發(fā)現(xiàn)第二個(gè)數(shù)據(jù)b并不符合十進(jìn)制數(shù)的要求,便將其放回原位,scanf函數(shù)返回0,提示讀取失敗。然后后面執(zhí)行的scanf函數(shù)再一次掃描鍵盤輸入緩沖區(qū),并自動(dòng)忽略空格,再一次來到了b這里,又發(fā)現(xiàn)b不是十進(jìn)制數(shù)據(jù),返回0告警。后續(xù)執(zhí)行scanf函數(shù),只要其格式控制字符不改變,這里的b注定就會(huì)是scanf函數(shù)的傷心嶺,難以逾越,也就導(dǎo)致了除以個(gè)數(shù)據(jù)外,其他數(shù)據(jù)均讀取失敗。

但是,當(dāng)你輸入12 - + 65 78時(shí),結(jié)果卻是:

返回值為1

返回值為0

返回值為0

返回值為1

返回值為1

您剛剛輸入的是:12

您剛剛輸入的是:0

您剛剛輸入的是:0

您剛剛輸入的是:65

您剛剛輸入的是:78

這里和上一次輸入的數(shù)據(jù)有什么不同呢?區(qū)別就是這次輸入的數(shù)據(jù)可以使十進(jìn)制數(shù)或者是十進(jìn)制數(shù)組成的一部分,主要就是-、+,這兩個(gè)符號(hào),其可以是有符號(hào)十進(jìn)制數(shù)的組成部分,例如-10,或者+10,因此這里的scanf函數(shù)能夠成功將其取走,而不會(huì)像上一個(gè)例子那樣,導(dǎo)致后續(xù)執(zhí)行的scanf函數(shù)讀取數(shù)據(jù)失敗。

在scanf函數(shù)的格式控制字符中,只有%c會(huì)將空格一并讀取并輸出,其他控制字符也會(huì)讀取空格,但均會(huì)自動(dòng)忽略空格、tab和回車鍵。scanf讀取數(shù)據(jù)時(shí),會(huì)從遇到的第一個(gè)非空格字符開始,到遇到的第一個(gè)空格結(jié)束,將兩者之間的數(shù)據(jù)視為一個(gè)按規(guī)定格式讀取到的數(shù)據(jù),并存儲(chǔ)在傳入的內(nèi)存地址中。

C語言scanf函數(shù)的使用心得的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
枣庄市| 蚌埠市| 广元市| 柯坪县| 论坛| 玉溪市| 邵阳市| 哈巴河县| 中江县| 多伦县| 亚东县| 肇源县| 淳化县| 田阳县| 广水市| 塘沽区| 平谷区| 腾冲县| 芒康县| 平山县| 曲阜市| 合川市| 乐业县| 荣成市| 梁河县| 娄烦县| 余庆县| 汉沽区| 惠来县| 祁连县| 宝坻区| 东丰县| 义乌市| 北安市| 梁山县| 阳西县| 卓尼县| 托克逊县| 安溪县| 峨边| 卓资县|