0
我有一段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");
請添加打開的文件的代碼。 –
outfd = open(out,O_RDWR | O_CREAT | O_TRUNC | O_LARGEFILE,0664); (outfd == -1) { dagutil_panic(「無法打開%s寫入。\ n」,out); } uOutfile = fdopen(outfd,「w」); – liv2hak
「似乎表明輸出文件尚未創建」←你確定嗎?它暗示我'gdb'找不到你的源代碼 - 除非你輸出一個.c文件。 – Thanatos