fwrite写一个整数

时间:2010-04-23 03:01:00

标签: c segmentation-fault fwrite

我正在尝试使用此功能将文字写入文件:

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)的手册页,我觉得我正确地使用了它,有什么东西我不见了吗?

3 个答案:

答案 0 :(得分:6)

请改为尝试:

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

答案 1 :(得分:0)

文件句柄有效吗?你用“w”打开()吗?如果不是,fwrite()将会出现段错误。

函数本身什么都不做,所以显然fwrite调用就是问题所在。检查参数。

答案 2 :(得分:0)

out不包含文件的地址,而是包含您传入的main文件指针的地址。此函数原型应为:

extern void write_int(FILE * & out, int num);

通过这种方式,您将指向main中的指针的双指针,然后该指针指向文件。