首页 > 解决方案 > 为什么 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 上。

标签: cfilefreadfseek

解决方案


你可能想要这样的东西:

int i; for (i=0;i<100;++i){fwrite(&zero, 1, 1, fp);}

您不能从指向单个字符的指针写入 100 个字节。


推荐阅读