帮忙解决下吧?

Sigger 2008-12-22 08:06:02
VC++2005中,下面红色部分的代码编译的时候出了下面的警告,我在坛里向高手请教了,大家给了我很多修正的办法:
1.使用fopen_s,fscanf_s;
2.#define _CRT_SECURE_NO_DEPRECATE 或 #pragma warning(disable:4996)

2的解决办法,我把他们放到文件头中,但不起作用,不知道是不是我放错了地方,还是怎么搞的,请大家帮帮我吧?
1的解决方法见下面绿色代码,但是我编译成功后,执行时出现异常,提示no symbol可以读取。不知道怎么搞的,是不是fopen_s,fscanf_s打开和读取数据和fopen以及fscanf的不一样啊?我使用fopen,fscanf读txt文件没有问题的!
(我使用的txt文件每行的格式为1 1 1 1 1 1 1
2 2 2 2 2 2 2 ,中间是空格,每行以回车结束。)

编译的代码:
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.'


使用fopen_s和fscanf_s改变后的下代码:
FILE* pfile;
if(fopen_s(&pfile,FileName,_T("r"))!=0)
{
printf("cannot open file\n");
exit(0);
}
while(7 == fscanf_s(pfile,"%f %f %f %f %f %f %f", &X, &Y, &Z, &intensity, &r, &g, &b)) //读取Leica pts格式的源文件
{
coordvertex->point.set1Value(num, X, Y, Z); //保存三维坐标点
color->rgb.set1Value(num, (float)(r/255.0),(float)(g/255.0),(float)(b/255.0)); //为每个点设置源文件的点的颜色
intensity_set->set1Value(num, intensity); //保存亮度

num++; //计算点数
}
...全文
49 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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