关于VS2019scanf的安全问题

相信很多人遇到过使用scanf提示错误的情况

那么VS报错的原因是什么呢?

先说一下scanf与scanf_s的区别

        scanf()函数是标准c中提供的标准输入函数,用来接收用户的输入数据

        scanf_s()函数是微软公司VS开发工具提供的一个功能相同的安全标准函数,使用该函数的时候 必须提供一个数字来表明最多读取多少位字符

        而scanf()函数在读取数据的时候不检查边界,所以可能造成内存访问越界

举个栗子

//比如  如果分配了5个字节的空间但是 用户输入了10个字节,就会导致scanf()都熬10个字节
char arr[5]={};
scanf("%s",arr);
//如果你输入1234567890,那么5以后的部分会被写到别的变量所申请的空间上面去
//这可能就会导致程序运行异常

        在这里推荐使用scanf 因为scanf毕竟是标准库函数 而scanf_s是VS专用的

        你的代码在非VS的编译器上是不能编译通过的 这样就降低了代码的可移植性

那么如何消除错误呢

利用#define消除scanf安全警告

  1. 找到VS目录中的 newc++file.pp关于VS2019scanf的安全问题_第1张图片
  2. 用notepad++或者其他文本编辑器 添加#define _CRT_SECURE_NO_WARNINGS 这句话

 (这样就告诉他  不要在警告我啦!)

         问题解决! 

你可能感兴趣的:(安全,c语言,几何学)