【发布时间】:2019-12-31 01:54:09
【问题描述】:
我正在尝试在 C 中打开标有步骤编号的文本文件。使用 GCC 编译器进行编译时,我没有收到任何错误。但是在执行时,我在 1016 步后出现分段错误。输出文件应该保存在名为 Config 的文件夹中。
我已经尝试了以下代码。
#include<stdio.h>
#include<stdlib.h>
int main() {
int i,j,itime,nwarm;
itime =0;
nwarm = 25000000;
while (itime<=nwarm){
printf ("itime =%d\n", itime);
char filename[128];
sprintf(filename,"./Config/%d", itime);
FILE *fConfig=fopen(filename,"w");
// Configuration print //
for (i=0; i<100; i++){
for (j=0;j<2;j++){
fprintf(fConfig,"%lf ",1.0);
}
fprintf(fConfig,"\n");
}
itime = itime + 1;
}
return 0;
}
【问题讨论】:
-
首先需要在while循环结束时关闭连接:
fclose(fConfig);。那么,你确定段错误来自sprintf吗?最后,你想用循环做什么?现在您打印两次“1.0”,然后打印一个换行符,然后重复 100 次... -
@Chelmy88 发生这种情况是因为 OP 没有关闭文件。它可以来自任何函数。
-
@JL2210 我也这么认为,但既然问题提到了
sprintf,他可能知道,例如来自gdb,segfault来自这里。 -
@Chelmy88 不,这是因为没有关闭文件。我很快测试了它,解决了这个问题。
标签: c segmentation-fault printf