我正在尝试使用此功能将文字写入文件:
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)的手册页,我觉得我正确地使用了它,有什么东西我不见了吗?
答案 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中的指针的双指针,然后该指针指向文件。