在运行时碰到下列错误:
看错误输出,需要将fopen改为fopen_s;
1.最普通的解决方法,就是使用fopen_s替代,
fopen_s()函数的用法:fopen_s(_Outptr_result_maybenull_ FILE ** _File, _In_z_ const char * _Filename, _In_z_ const char * _Mode);
fopen()函数的用法:fopen(_In_z_ const char * _Filename, _In_z_ const char * _Mode);
fopen_s参数要比fopen多一个,并且返回的类型为:errno_t __cdecl,但fopen()返回的类型为:FILE * __cdecl
直接更改fopen_s函数可能并不适合自己的程序,我直接修改后发现不能解决我的问题,错误更多了。因此我选用了第二种方法。
2.直接更改预定义处理:
右击项目,点击“属性”,打开属性页后,点击“预处理器”,在预处理器定义中添加“_CRT_SECURE_NO_DEPRECATE ”,然后点击确定,再点击应用,最后再确定;
设置完后,重新运行,运行成功,解决了错误。
3.将
FILE* pFile=fopen_s(filename,"rb");
改为下列所示:
FILE* pFile;if(fopen_s(&pFile, filename, "rb"))return false;