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

一开始使用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\源.c 6 1" ConsoleApplication1

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

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

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

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

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

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


posted @ 2015-04-28 11:16  NS_Object  阅读(619)  评论(0编辑  收藏  举报