我试图写入txt文件但是在程序写完几乎所有文本之后,我得到了下一个错误:
0x0F6F8EF7处的未处理异常(msvcr120d.dll)0xC0000005:访问冲突读取位置0x091C5B30。
跟踪设置为:
trace = fopen("trace.txt", "w");
arr设为:
int arr[18]; // (also all of the arr values initial to zero.)
for (i = 0; i < 18; i++){
fprintf(trace, "%08x ", arr[i]);
}
答案 0 :(得分:2)
我的猜测是循环迭代超过预期导致 arr [i] 超出其固定大小。除此之外,问题可能出在跟踪初始化中。提供有关这些的信息!
这对我有用:
int i;
int mark[5] = {19, 10, 8, 17, 9};
FILE *trace = fopen("C:\\trace.txt", "w");
if (trace == NULL)
{
printf("Error opening file!\n");
}
for(i = 0; i <= 4; i++){
fprintf(trace,"%d ", mark[i]);
}
fclose(trace);
<强>结果:强>
发布后更新: 要正确迭代arr [18],你的for循环应如下所示:
for(i = 0; i <= 17; i++)
这是因为当您定义具有18个元素的数组时,您可以使用arr [0]到arr [17]的成员。
如果你看一下我上面的例子,这里是相同的片段结果,但当你像这样运行for循环时:
for(i = 0; i <= 5; i++)
注意我已将 i&lt; = 4 更改为 i&lt; = 5 ;
<强>结果:强>
正如您所看到的,我们正在访问数组边界之外的元素,导致程序在文本文件中写入垃圾。