我有一段C代码,我尝试在打开的输出文件中写入一个缓冲区。当我尝试运行代码时出现分段错误。Linux上的fwrite中的段错误
if (fwrite(header, record_size, 1, uOutfile) != 1)
{
return 0;
}
头是一个正确填充,我能够打印出缓冲区头的header.the大小的内容肯定比record_size.Is还有什么值得checking.?Any其他更大的原因其中FWRITE可引起segfault.Gdbing问题给出了下面的输出
0x00007ffff6b7d66d in _IO_fwrite (buf=0x726d60, size=16, count=1, fp=0x738820) at iofwrite.c:43
43 iofwrite.c: No such file or directory.
in iofwrite.c
这似乎表明,输出文件一直没有created.how曾经和ls -l命令在我的目录显示大小为0的输出文件字节。
如果有人能够解决这个问题,我将不胜感激。
编辑:打开的文件编号:
outfd = open(out, O_RDWR|O_CREAT|O_TRUNC|O_LARGEFILE, 0664);
if (outfd == -1) {
dagutil_panic("Could not open %s for writing.\n", out);
}
uOutfile = fdopen(outfd, "w");
2011-09-15
liv2hak
+0
请添加打开的文件的代码。 –
+0
outfd = open(out,O_RDWR | O_CREAT | O_TRUNC | O_LARGEFILE,0664); (outfd == -1) { dagutil_panic(“无法打开%s写入。\ n”,out); } uOutfile = fdopen(outfd,“w”); –
+0
“似乎表明输出文件尚未创建”←你确定吗?它暗示我'gdb'找不到你的源代码 - 除非你输出一个.c文件。 –