解決VS2017中使用scanf函數報錯的問題


我們在VS2017中如果使用C語言的scanf輸入函數,編譯的時候編譯器會報error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 這個是因為VS使用的是C11新標准導致的

解決方法如下

1、在文件頭部添加#pragma warning(disable : 4996) 這一行來關閉C4996類型的警告

2、在項目"屬性"-"配置屬性"-"C/C++"-"命令行"-“其他選項”中添加/D_CRT_SECURE_NO_WARNINGS 來關閉整個項目C4996類型的警告

3、直接將代碼中的scanf函數修改成scanf_s函數,scanf_s的具體用法如下

#include <iostream>
#include <Windows.h>

int main(void) {
    int x;
    scanf_s("%d", &x); //不需要使用第3個參數,用法和scanf相同

    float f;
    scanf_s("%f", &f); //不需要使用第3個參數,用法和scanf相同

    char c;
    scanf_s("%c", &c, sizeof(c)); //需要使用第3個參數,否則有告警

    char name[16];
    scanf_s("%s", name, sizeof(name)); //需要使用第3個參數(指定字符數組的長度,防止內存越界)

    int age;
    char addr[16];
    scanf_s("%d%s", &age, addr, sizeof(addr));

    system("pause");
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM