6

この関数を使用してファイルに単語を書き込もうとしています:

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) の man ページを見たところ、正しく使用できたように感じました。足りないものはありますか?

4

3 に答える 3

9

代わりにこれを試してください:

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?

于 2010-04-23T03:12:08.873 に答える
0

ファイルハンドルは有効ですか? 「w」で fopen() しましたか?そうでない場合、 fwrite() はセグメンテーション違反になります。

関数自体は実際には何もしないので、明らかに fwrite 呼び出しが問題です。引数を調べます。

于 2010-04-23T03:29:21.987 に答える