警告又出现了!

Sigger 2008-12-20 09:36:35
文件头中已经包括了如下文件和说明,但是下面红色部分的代码编译的时候出了下面的警告,大家帮帮解决下呀?谢谢!
#include <fstream>
#include <iostream>
#include <string>
#include <cstdio>
using std::string;
using std::ofstream;
using std::ifstream;
using namespace std;

编译的代码:
FILE* pfile=fopen(FileName,_T("r"));
fseek(pfile,0,SEEK_SET);
fscanf(pfile, "%[^\n] ", str_line);

上面红色部分代码编译的提示下列警告:

1>c:\documents and settings\scan\desktop\kdtree\kdtree\globalvariable.cpp(38) : warning C4996: 'fopen' was declared deprecated
1> d:\program files\microsoft visual studio 8\vc\include\stdio.h(234) : see declaration of 'fopen'
1> Message: 'This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
1>c:\documents and settings\scan\desktop\kdtree\kdtree\globalvariable.cpp(40) : warning C4996: 'fscanf' was declared deprecated
1> d:\program files\microsoft visual studio 8\vc\include\stdio.h(249) : see declaration of 'fscanf'
1> Message: 'This function or variable may be unsafe. Consider using fscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
...全文
154 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Naruto 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fox000002 的回复:]

或者在文件开头,包含头文件之前,写上

C/C++ code
#define _CRT_SECURE_NO_DEPRECAT
[/Quote]

为什么#define _CRT_SECURE_NO_DEPRECATE加上这一句???
livpu 2008-12-20
  • 打赏
  • 举报
回复
提示用fopen不安全,建议用fopen_s
忽略警告的话在前面加句 #pragma warning (disable:C4996)
yuzl32 2008-12-20
  • 打赏
  • 举报
回复

#define _CRT_SECURE_NO_DEPRECATE 或
#pragma warning(disable:4996)
Sigger 2008-12-20
  • 打赏
  • 举报
回复
我使用的是vs05的版本,楼上各位的指点,我受益菲浅呀,谢谢啦!
yuzl32 2008-12-20
  • 打赏
  • 举报
回复
这2个警告只是提示你使用该函数存在安全性问题,不推荐你使用。但也不代表不能用。
yuzl32 2008-12-20
  • 打赏
  • 举报
回复
#pragma warning(disable:C4996)
fox000002 2008-12-20
  • 打赏
  • 举报
回复
#define _CRT_SECURE_NO_DEPRECATE
fox000002 2008-12-20
  • 打赏
  • 举报
回复
或者在文件开头,包含头文件之前,写上

#define _CRT_SECURE_NO_DEPRECAT
星羽 2008-12-20
  • 打赏
  • 举报
回复
这个应该是vs2005以上才出现的警告吧 ,就是让你使用安全crt函数,后面带 _s的函数

比如 scanf 函数的安全版本 scanf_s
strcpy的安全版本 strcpy_s

如果是知识在windows上开发,不考虑跨平台的话,就按它的建议使用安全系列的crt函数吧

如果你还考虑在linux系统上运行等,就不要管这个警告,disable掉 就是了
fox000002 2008-12-20
  • 打赏
  • 举报
回复
警告的意思是让用

errno_t fopen_s(
FILE** pFile,
const char *filename,
const char *mode
);

int fscanf_s(
FILE *stream,
const char *format [,
argument ]...
);

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧