文件操作

awsqsh 2012-06-06 09:04:28
FILE *file_igs;
file_igs = fopen( "d:\\igs_doc_1.igs", "w" );
if( file_igs == NULL ) return;
int k=0;
while(layer_1_vector[k]>=0.000 && layer_1_vector[k]<=1.000)
{
fprintf(file_igs,"%f,",layer_1_vector[k++]);
//fprintf(file_igs,",");
}
k=0;
while(layer_2_vector[k]>=0.000 && layer_2_vector[k]<=1.000)
{
fprintf(file_igs,"%f,",layer_2_vector[k++]);
//fprintf(file_igs,",");
}

帮忙看看在release下第二个while循环始终没有写进文件,debug下正常。为什么?万分感激!
...全文
144 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
awsqsh 2012-06-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
不要使用
while (条件)
更不要使用
while (组合条件)
要使用
while (1) {
if (条件1) break;
//...
if (条件2) continue;
//...
if (条件3) return;
//...
}
因为前两种写法在语言表达意思的层面上有二义性,只有第三种才忠实反映了程序流的实际情况。
典型如:
下面两段的语义……
[/Quote]

感谢赵老师!
赵4老师 2012-06-07
  • 打赏
  • 举报
回复
不要使用
while (条件)
更不要使用
while (组合条件)
要使用
while (1) {
if (条件1) break;
//...
if (条件2) continue;
//...
if (条件3) return;
//...
}
因为前两种写法在语言表达意思的层面上有二义性,只有第三种才忠实反映了程序流的实际情况。
典型如:
下面两段的语义都是当文件未结束时读字符
whlie (!feof(f)) {
a=fgetc(f);
//...
b=fgetc(f);//可能此时已经feof了!
//...
}
而这样写就没有问题:
whlie (1) {
a=fgetc(f);
if (feof(f)) break;
//...
b=fgetc(f);
if (feof(f)) break;
//...
}
类似的例子还可以举很多。
自信男孩 2012-06-07
  • 打赏
  • 举报
回复
是不是没有fclose();呢,如果没有关闭而强制退出程序,是不能写进文件中去的。
也可以通过fprintf的返回值来判断是否写入成功。
AnYidan 2012-06-07
  • 打赏
  • 举报
回复
lz 确认进入了第二个while循环?
quwei197874 2012-06-07
  • 打赏
  • 举报
回复
哪越界了问题吧
awsqsh 2012-06-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
引用楼主 的回复:
帮忙看看在release下第二个while循环始终没有写进文件,debug下正常。


我不相信。换个平台试试。
[/Quote]

vs2008下面写的程序 都几万行了。怎么换平台啊?
cryingbee 2012-06-07
  • 打赏
  • 举报
回复
是console的程序吗?是的话自己加些printf把有用的信息打出来看看,比如:layer_2_vector[0]。
Binzo 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
帮忙看看在release下第二个while循环始终没有写进文件,debug下正常。
[/Quote]

我不相信。换个平台试试。
W170532934 2012-06-06
  • 打赏
  • 举报
回复
据说release下也是可以调试的。试试看

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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