c - 打开二进制文件时 fwrite() 和 fread() 如何工作
问题描述
我正在学习 C,但我不理解 fwrite() 和 fread()。
double n;
FILE *p;
p = fopen("output.dat","w+b");
rewind(p);
fread(&n,sizeof(double),1,p);
printf("%lf",n);
n = 12.0;
fwrite(&n,sizeof(double),1,p);
fclose(p);
return 0;
它无法按预期读写数据,请问为什么
解决方案
花点时间检查fopen 文档中的模式表。
您会看到,w+
如果文件不存在,该模式将创建一个新文件,如果文件存在,则销毁其内容。
因此,在您调用 之后fopen
,您可以保证有一个空文件。您尝试做的下一件事是从中读取数据,这当然会失败。您的程序具有虚假输出(未定义的行为),因为您甚至没有测试操作是否成功并且您输出了一个未初始化的值。
也许您想要的是使用a+b
开放模式。您立即致电rewind
. 当然,您仍然需要处理fread
首次创建此文件时的失败调用。
推荐阅读
- grails - 同一个班级的多对多关系
- flutter - 在文本小部件颤动中打印 int 值
- google-apps-script - 哪个函数比 FOR 更快?Google Apps 脚本 - Google 表格
- swift - 如何在 Swift 脚本中创建 git hook 以防止 console.log() 行?
- json - Python - 将 JSON 转换为图像(.jpg)
- ios - DispatchGroup 操作顺序
- javascript - 重定向在 React 上不起作用,使用反应路由器 dom
- python - 如何使用 pandas 自动解析 CSV 中的日期时间
- python - 如何测试文本解析程序
- selenium - 在 jmeter 中使用 webdriver 插件