解决VS2013或2017中类似于:error C4996: 'scanf': This function or variable may be unsafe的问题
用慣了之前的scanf()函數(shù),突然要用scanf_s()函數(shù)多多少少有點(diǎn)不習(xí)慣,所以在這里給大家介紹一下scanf_s的用法或好處吧!
1、scanf_s函數(shù)格式控制字符串中除了格式聲明之外,如果有其他字符,則必須在輸入數(shù)據(jù)時(shí)在對(duì)應(yīng)的位置上輸入與這些字符相同的字符。
? ? ? 例如:scanf_s("%d,%d,%d",&a,&b,&c);
? ? ? 在輸入數(shù)據(jù)時(shí),就應(yīng)該輸入1,2,3;123之間的逗號(hào)“,”是不能省略的,不是之前? ? ? ? 的1 2 3
? ? ? ?輸入數(shù)值時(shí),兩個(gè)數(shù)值之間要插入空格或其他分隔符符是為了對(duì)多個(gè)數(shù)值進(jìn)行區(qū)分。但? ? ? ? ? ? ?是,如果出現(xiàn)上面舉例的情況,就只能使用與格式控制字符串中字符相對(duì)應(yīng)的字符。
? ? ? ?正如度娘所說(shuō):很多帶“_s”后綴的函數(shù)是為了讓原版函數(shù)更安全,傳入一個(gè)和參數(shù)有關(guān)的? ? ? ? ?大小值,避免引用到不存在的元素,有時(shí)黑客可以利用原版的不安全性黑掉系統(tǒng)。比? ? ? ? ? ? ? ? ?如:char d[20];寫(xiě)成scanf_s("%s",d,20);才是正確的,有這個(gè)參數(shù)20使準(zhǔn)確性提高。
2、但是還是習(xí)慣輸入scanf,這里提供一種最簡(jiǎn)單的方法,讓你回歸到自己的習(xí)慣當(dāng)中!
? ? ? 第一步:(一定要在項(xiàng)目里設(shè)置)項(xiàng)目屬性->配置屬性->C/C++->預(yù)處理器->預(yù)處理的定義->點(diǎn)擊按鈕 (V)->編輯,輸入:“_CRT_SECURE_NO_WARNINGS”就ok了
總結(jié)
以上是生活随笔為你收集整理的解决VS2013或2017中类似于:error C4996: 'scanf': This function or variable may be unsafe的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 中邮邮你贷是什么意思
- 下一篇: 当前中巴双边关系中的增量想和重要支撑力量