关于scanf与scanf_s的区别,以及用scanf编译出错并且提示找不到可执行文件.exe的解决办法。

来源:互联网 发布:ubuntu ssh登录 编辑:程序博客网 时间:2024/04/19 07:27

一开始使用vs2013,中途遇到了许多问题,这些问题可能特别小,但是足以阻碍你的前行步伐;

书上的课后题,我按答案敲上去的,可是编译时还是出现如下错误:“错误1 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.d:\c语言练习题\consoleapplication1\consoleapplication1\源.c6 1" ConsoleApplication1

编译调试会提示:”无法启动程序,系统找不到指定的文件。”如下图所示:

百度没有解决,在csdn上发帖经人提示发现问题将scanf替换成scanf_s后即可编译成功,问题消失。

原因是,VS针对scanf的不安全性,又包了一个scanf_s的函数 ,定义里,多了一个长度的参数, scanf_s("%s",buf,sizeof(buf));

这样不会导致内存溢出错误(比如只能接受4个长度的数组,输入的时候却输入了6个长度)

(我也没明白,这个溢出会有什么异常)

GCC里直接编译,scanf,不会有错误提示的,这个错误是Windows专有的。


0 0