[英]fwrite write an integer
我正在嘗試使用此函數將文字寫入文件:
extern void write_int(FILE * out, int num) {
fwrite(&num,sizeof(int),1, out);
if(ferror(out)){
perror(__func__);
exit(EXIT_FAILURE);
}
}
但是每當它試圖運行fwrite時我都會遇到分段錯誤。 我查看了fwrite(3)的手冊頁,我覺得我正確使用它,有什么我缺少的嗎?
試試這個:
void write_int(FILE * out, int num) {
if (NULL==out) {
fprintf(stderr, "I bet you saw THAT coming.\n");
exit(EXIT_FAILURE);
}
fwrite(&num,sizeof(int),1, out);
if(ferror(out)){
perror(__func__);
exit(EXIT_FAILURE);
}
}
為什么你的原始功能是extern
?
文件句柄有效嗎? 你用“w”打開()嗎? 如果不是,fwrite()將會段錯誤。
函數本身什么都不做,所以顯然fwrite調用就是問題所在。 檢查參數。
out
不包含文件的地址,而是包含傳入main的文件指針的地址。 這個函數原型應該是這樣的:
extern void write_int(FILE * & out, int num);
這樣你就可以在main中指向指針,然后指向文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.