新壺裝老酒之如何拯救哀怨的scanf老兵

2021-07-06 08:38:04 字數 934 閱讀 9318

下圖是具體的錯誤提示截圖:

在解決這種問題之前,我們首先來談談什麼是scanf函式。scanf函式是c語言的乙個格式化輸入函式,在標頭檔案stdio.h中被定義。是乙個int型別的函式,把成功匹配的輸入項作為返回值。其宣告方式為【int scanf( char *format, ...)】,我們可以使用vs2013的goto definition選項來檢視有關scanf具體資訊。下面是scanf函式中幾個常用的格式轉換說明:

1)%d:十進位制整數;

2)%u:無符號十進位制整數;

3)%o:八進位制整數,以0開頭;

4)%x:十六進製制整數,以0x開頭;

5)%c:字元型別,將輸入中的多個字元挨個存放到指定位置中;

7)%f:浮點數型別,可以包含正負號、小數點和指數部分;

ok,現在我們已經熟悉了scanf的功能和用法,那麼應該怎麼在vs2013這種高大上的環境中使用呢?本人雖不才,但至少可以提供兩種解決方案。

第一種:左鍵單機您的專案選項卡,接著單機您的工程屬性選項卡,在裡面找到【c/c++】選項,把其中的【是否執行sdl檢查】設定為否。如圖所示:

第二種:在程式**的開頭處加上【#pragma warning(disable 4996)】即可,如圖所示:

在這裡必須要說一下第三種方案,這個也是微軟官方給出的建議方案,那就是使用scanf_s來代替scanf,它的使用方法與scanf函式完全一致,唯一的不同是多了乙個邊界檢查的功能,至於老版輸入函式scanf,還是讓她留在垂暮之年裡回憶自己曾經的輝煌吧