相信有不少人在使用vs的時候會遇到以下這個問題:scanf返回值被忽略,接下來我就告訴大家該如何解決這個問題
出現(xiàn)問題的原因:
??因為scanf()在讀取數(shù)據(jù)時不檢查邊界,所以可能會造成內(nèi)存泄漏。Microsoft公司覺得這個函數(shù)不安全,于是自己在VS編譯器中提供了scanf_s()這個函數(shù),這個函數(shù)提供了邊界限制。想解決這個報錯異常有以下幾種方法:
方法一(不推薦!):
??將scanf改為scanf_s即可解決這個問題,效果如下所示:
??雖然這種方法可行,但是在這里不推薦使用這種方式,因為編寫程序要保證其有良好的可移植性,scanf_s這個函數(shù)是Microsoft自己定義的,在ANSI C中只有scanf(),沒有scanf_s(),所以如果跨平臺移植的話代碼很可能會報錯,找不到scanf_s這個函數(shù),在移植時需要更改,這樣的代碼就失去了良好的可移植性,所以不做推薦。
方法二(推薦):
在代碼的第一行加入這句話:
#define _CRT_SECURE_NO_WARNINGS 1
??這句話的意思是代碼不進(jìn)行SDL安全檢查,這樣就不會報錯了,但是細(xì)心的人會發(fā)現(xiàn),代碼還是會有警告
??顯然作為一個合格的程序員我們是不容許任何一個警告的,在這里我也為大家提供了解決辦法:
再加入這句話
#pragma warning(disable:6031)
這樣就會忽略6031這個警告
現(xiàn)在我們的代碼就非常的完美了。
??但是可能還有人問了,每次都這么添加不是很麻煩嗎?所以這里我為大家提供了一勞永逸的方法:
打開VS安裝路徑下的這個文件:
D:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\VCProjectItems
??不同版本的路徑也會有所不同,我這里是VS2022的路徑,不同版本的路徑可能不同,但是文件名是一樣的,所以可以選擇在文件夾中搜索newc++file.cpp這個文件。
打開文件后我們將這兩句話復(fù)制進(jìn)去后并且保存
#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
如下:
??這樣之后我們創(chuàng)建一個新的.c文件它就會自動書寫在文件的開頭了。
以上就是關(guān)于scanf返回值被忽略的原因及其解決方法的所有內(nèi)容了。
2022-11-07
??有好些人私信反應(yīng)說 newc++file.cpp
這個文件不能修改,或者沒有管理員權(quán)限修改,要么是就是修改后不能保存,這里是我疏忽了,我在我這里演示兩種修改并保存的方法:
第一種:編輯器,如NotePad++
??使用NotePad++打開,進(jìn)行更改后會有這個提示,選擇管理員模式啟動NotePad++即可保存更改,這個軟件是免費的,平時查看代碼等也挺好用的,大家可以下載一個試試:官方下載地址
??如果不想額外下載軟件的話,可以看方法二
方法二:修改用戶本身對這個文件的操作權(quán)限
??右擊文件選擇最底下的屬性,然后切換到安全,選擇Users用戶(因為我們登錄電腦時的身份是普通用戶,并不是管理員)之后點擊編輯
選中Users用戶,將他的權(quán)限改為完全控制即可文章來源:http://www.zghlxwxcb.cn/news/detail-802025.html
??這樣的話我們就對這個文件擁有了修改的權(quán)限,這樣即使我們使用記事本打開,也不會提示我們無法無法修改,或者修改無法保存等。文章來源地址http://www.zghlxwxcb.cn/news/detail-802025.html
到了這里,關(guān)于VsStudio中scanf返回值被忽略的原因及其解決方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!