最近在学习C语言的一些文件操作的函数,发现使用fopen的时候,报了一个错误
错误内容如下(直接CV过来的)
严重性 代码 说明 项目 文件 行 源 禁止显示状态
错误 C4996 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable
deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. ConsoleApplication1
C:Usersadminsource
eposConsoleApplication1ce.c 8 生成
后面查看了相关的文档,最后搞明白了解决办法
关于新版VS编辑环境下提示fopen不安全的问题报C4996错误的解决办法
解决办法-1
vs2013以上,需要在头文件前添加
#define _CRT_SECURE_NO_WARNINGS
否则就会存在安全检查错误
解决办法-2
//使用fopen_s
FILE* file_f = NULL;
fopen_s("t.txt","w+",file_f);
fopen和fopen_s的区别
fopen-源码 只需要提供两个参数,一个文件名称,一个模式
_ACRTIMP FILE* __cdecl fopen(
_In_z_ char const* _FileName,
_In_z_ char const* _Mode
);
fopen_s-源码 需要提供三个参数 第一个是文件指针,第二个文件名,第三个是模式
_ACRTIMP errno_t __cdecl fopen_s(
_Outptr_result_maybenull_ FILE** _Stream,
_In_z_ char const* _FileName,
_In_z_ char const* _Mode
);