c - 为什么 fread() 给出看似随机的数据?
问题描述
我有以下 C 代码以rb+
模式打开文件,然后写入 100 字节的 value 0
。当我读取偏移量不是 0 的文件时,我得到 96。这是为什么呢?
FILE *fp = fopen("myfile", "rb+");
rewind(fp);
char zero = 0;
fwrite(&zero, 1, 100, fp);
char result;
fseek(fp, 1, SEEK_SET);
fread(&result, 1, 1, fp);
printf("%d\n", result);
我在使用 GCC 的 Linux x64 上。
解决方案
你可能想要这样的东西:
int i; for (i=0;i<100;++i){fwrite(&zero, 1, 1, fp);}
您不能从指向单个字符的指针写入 100 个字节。
推荐阅读
- antlr4 - 如何忽略ANTLR4中的其余语句
- typescript - TypeScript 中具有泛型的默认参数
- azure - Azure Application gateway - trouble shooting?
- javascript - jQuery 插件正在使用 jQuery v3.5.1 的已弃用功能
- azure-pipelines - 使用管道构建时 jcenter 失败(504 超时)
- postgresql - 如何将 postgres 命令发送到 AWS Run Command?
- powershell - 我有一个 powerscript 可以很好地与 Outlook 一起发送电子邮件。如何更改它以从我的 gmail 帐户发送电子邮件
- python-3.x - 如何在listview django中结合图像和视频嵌入
- python - 如何在 django 中按日期从 MySQL 获取数据?
- css - 同一断点的多个媒体查询