linux - 在 Linux 上使用 fread 返回 0
问题描述
我已经编写了下面的代码,但是我从 fread 返回 0。perror 返回成功,所以我猜它工作正常。但我不明白为什么我没有读取写入文件的数据。
int main(int argc, char **argv)
{
FILE *fp;
char wr_buf[4096];
char rd_buf[4096];
int i;
size_t num;
printf("v1\n");
fp = fopen("/run/media/nvme/test", "w+");
if (fp == NULL)
{
printf("FAIL\n");
return -1;
}
for (i=0; i<4096; i++)
{
wr_buf[i] = i;
rd_buf[i] = 0;
}
num = fwrite(wr_buf , 1 , sizeof(wr_buf) , fp);
printf("WR num %d\n", num);
num = fread(rd_buf , 1 , sizeof(rd_buf) , fp);
printf("RD num %d\n", num);
perror("fread");
for (i=0; i<4096; i++)
{
if (wr_buf[i] != rd_buf[i])
{
printf("ERR %x != %x\n", wr_buf[i], rd_buf[i]);
}
}
fclose(fp);
printf("DONE\n");
return 0;
}
解决方案
rewind(fp);
在 fwrite 和 fread 之间调用,以返回文件的开头。要查找任意字节偏移,请使用 fseek 而不是 rewind。
推荐阅读
- css - CSS网格边框不响应
- django - Django基于连接使用ORM从数据库中获取数据
- autodesk-forge - Autodesk Forge Viewer - 始终显示标记
- angularjs - AngularJS 中的 this 与 $scope,'this' 显示 ng-if 的特殊行为
- amazon-web-services - 使用具有特殊字符的选择查询 Athena
- json - 我的数据框有很多 json 类型的列,我想对其进行规范化
- c# - 无法从输入模板名称中确定所需的模板:blazorserverside
- c - 从结构数组中删除元素
- php - Wocoomerce 单品 - 变化下拉替换图像仅用于颜色变化
- python - 在kivy,python中动态改变椭圆的纹理