码迷,mamicode.com
首页 > 其他好文 > 详细

解决VS2017中使用scanf函数报错的问题

时间:2019-08-17 17:40:24      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:scanf   mamicode   编译器   crt   div   直接   字符数组   警告   pause   

我们在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;
}

 

解决VS2017中使用scanf函数报错的问题

标签:scanf   mamicode   编译器   crt   div   直接   字符数组   警告   pause   

原文地址:https://www.cnblogs.com/tanghaiyong/p/11369275.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!