簡體   English   中英

fwrite寫一個整數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM