今日报错系列:‘fopen‘: This function or variable may be unsafe. Consider using fopen_s instead.

VS2017,再用到FILE写入时,遇到如下报错

'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.	

在这里插入图片描述

在一顿搜索尝试之后,什么按步骤 【打开项目 >> 属性 >> C/C++ >>预处理器 >> 预处理器定义 】内添加 _CRT_SECURE_NO_WARNIN 等等这些都没有效果。

最终是这样解决的:

在程序最前面添加:#define _CRT_SECURE_NO_DEPRECATE 后解决问题。

#define _CRT_SECURE_NO_DEPRECATE 

举个栗子:

#define _CRT_SECURE_NO_DEPRECATE //加到此处解决问题
#include <iostream>
using namespace std;

void main()
{
    
    
	FILE *fp = fopen("myFileFp.txt","w");
	char str[] = "hello world !";
	for (int i = 0; i < 1000; i++)
	{
    
    
		fprintf(fp," 第 %d 个 %s ;\n",i,str);
	}
	fclose(fp);
}

文件打开后:从0 - 999 个 hello world !;
在这里插入图片描述

下面把找到的资料先放到这,以备参考:

解决fopen、fscanf 在VS中要求替换为fopen_s、fscanf_s的最全解决办法 -------------- ps:在使用MFC中遇到上述问题,可以通过方法三解决方法一:在程序最前面加#define _CRT_SECURE_NO_DEPRECATE;

方法二:在程序最前面加#define _CRT_SECURE_NO_WARNINGS;

方法三:在程序最前面加#pragma warning(disable:4996);

方法四:把scanf、scanf改为scanf_s、fopen_s,具体方法请百度;

方法五:无需在程序最前面加那行代码,只需在新建项目时取消勾选“SDL检查”即可;

方法六:若项目已建立好,在项目属性里关闭SDL也行;

方法七:在工程项目设置一下就行;将报错那个宏定义放到 项目属性 – C/C+±- 预处理器 – 预处理器定义;

方法八:在 项目属性 – c/c++ – 命令行 添加:/D _CRT_SECURE_NO_WARNINGS 就行了。

结束:

分享也是自己对问题再次加深理解的方式,可能不全面,但绝对有用,后面将不断完善~

猜你喜欢

转载自blog.csdn.net/hwx802746/article/details/113177012