第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

掃描量的缺點(diǎn)

掃描量的缺點(diǎn)

C
尚方寶劍之說 2019-06-24 11:17:11
掃描量的缺點(diǎn)我想知道scanf().在許多網(wǎng)站上,我讀到scanf可能導(dǎo)致緩沖區(qū)溢出。原因是什么?還有其他缺點(diǎn)嗎?scanf?
查看完整描述

3 回答

?
吃雞游戲

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

到目前為止,大多數(shù)答案似乎都集中在字符串緩沖區(qū)溢出問題上。實(shí)際上,可以使用的格式說明符scanf函數(shù)支持顯式場(chǎng)寬設(shè)置,該設(shè)置限制輸入的最大大小并防止緩沖區(qū)溢出。這使得人們普遍指責(zé)字符串緩沖區(qū)溢出在scanf幾乎毫無根據(jù)。聲稱scanf在某種程度上類似于gets在這方面是完全不正確的。在質(zhì)量上有一個(gè)很大的區(qū)別scanfgetsscanf為用戶提供防止字符串緩沖區(qū)溢出的功能,而gets不會(huì)的。

可以說這些scanf功能很難使用,因?yàn)樽侄螌挾缺仨毲度氲礁袷阶址?無法通過變量參數(shù)傳遞它,這可以在printf)。這是真的。scanf在這方面確實(shí)設(shè)計(jì)得很差。但是任何聲稱scanf在字符串緩沖區(qū)溢出安全方面,不知何故被無可救藥地破壞了,完全是假的,通常是懶惰的程序員造成的。

真正的問題是scanf有著完全不同的性質(zhì),盡管它也是關(guān)于溢流..什么時(shí)候scanf函數(shù)用于將數(shù)字的十進(jìn)制表示轉(zhuǎn)換為算術(shù)類型的值,不提供防止算術(shù)溢出的保護(hù)。如果發(fā)生溢出,scanf產(chǎn)生未定義的行為。因此,在C標(biāo)準(zhǔn)庫(kù)中執(zhí)行轉(zhuǎn)換的唯一正確方法是strto...一家人。

所以,總結(jié)以上,問題在于scanf這是很難(盡管可能)正確和安全地使用字符串緩沖區(qū)。這是不可能安全使用的算術(shù)輸入。后者才是真正的問題。前者只是一個(gè)不便之處。

P.S.上面的意思是關(guān)于…的整個(gè)家庭。scanf職能(也包括fscanfsscanf)。帶著scanf具體來說,顯而易見的問題是,使用嚴(yán)格格式化的函數(shù)進(jìn)行潛在讀取的想法。互動(dòng)式輸入是相當(dāng)有問題的。


查看完整回答
反對(duì) 回復(fù) 2019-06-24
?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊

來自lang.c公司的常見問題:為什么大家都說不要用掃描呢?我應(yīng)該用什么代替?

scanf有很多問題-見問題12.1712.18 a,和12.19..另外,%s格式也有同樣的問題gets()有(見問題)12.23很難保證接收緩沖區(qū)不會(huì)溢出。[腳注]

更廣泛地說,scanf是為相對(duì)結(jié)構(gòu)化的格式化輸入設(shè)計(jì)的(它的名稱實(shí)際上是從“掃描格式化”派生出來的)。如果你注意,它會(huì)告訴你它是成功的還是失敗的,但它只能告訴你它是在哪里失敗的,而根本不知道它是如何或?yàn)槭裁词〉?。您幾乎沒有機(jī)會(huì)進(jìn)行任何錯(cuò)誤恢復(fù)。

然而,交互式用戶輸入是最不結(jié)構(gòu)化的輸入。一個(gè)設(shè)計(jì)良好的用戶界面將允許用戶輸入幾乎任何東西-不僅僅是字母或標(biāo)點(diǎn)符號(hào)(當(dāng)數(shù)字被期望時(shí)),而且比預(yù)期的字符更多或更少,或者根本沒有字符(E.,只是返回鍵),或過早的EOF,或任何東西。當(dāng)使用scanf;讀整行要容易得多(用fgets),然后用sscanf或者其他一些技巧。(功能如strtolstrtok,和atoi通常是有用的;參見12.1613.6)如果你真的使用任何scanf變量,請(qǐng)確保檢查返回值,以確保找到了預(yù)期的項(xiàng)目數(shù)。另外,如果你用%s,確保防止緩沖區(qū)溢出。

請(qǐng)注意,順便說一句,對(duì).的批評(píng)scanf不一定要起訴fscanfsscanfscanf讀自stdin,這通常是一個(gè)交互式鍵盤,因此是最小的限制,導(dǎo)致最多的問題。另一方面,當(dāng)數(shù)據(jù)文件具有已知的格式時(shí),使用fscanf..使用sscanf(只要檢查了返回值),因?yàn)榛謴?fù)控制非常容易,所以重新啟動(dòng)掃描,如果不匹配則丟棄輸入,等等。

其他鏈接:

參考文獻(xiàn):K&R2,SEC.7.4第159頁


查看完整回答
反對(duì) 回復(fù) 2019-06-24
  • 3 回答
  • 0 關(guān)注
  • 418 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)