c - Fseek 回滚 8 个字节,但我希望它是 4 个字节
问题描述
for (int i = 0; i < num - 1 - ct; i++) {
int tmp = k;
fread(&k, sizeof(int), 1, fp);
fflush(stdin);
fseek(fp, -(sizeof(int)), SEEK_CUR);
fwrite(&tmp, sizeof(int), 1, fp);
}
问题部分在上面。我想fseek
每次回滚 4 个字节。但它会回滚 8 个字节,或者可能会回滚到文件的开头。我无法让它正常工作。一个新生。提前致谢。
解决方案
问题是当从同一个流从写入切换到读取时,您不使用fseek()
同步流的内部数据。
试试这个:
fseek(fp, 0, SEEK_CUR);
for (int i = 0; i < num - 1 - ct; i++) {
int tmp = k;
fread(&k, sizeof(int), 1, fp);
//fflush(stdin); // this has undefined behavior
fseek(fp, -(sizeof(int)), SEEK_CUR);
fwrite(&tmp, sizeof(int), 1, fp);
fseek(fp, 0, SEEK_CUR);
}
推荐阅读
- c# - 如果语句仅选择 linq2xml 查询中的第一个值
- android - FragmentTransaction 在替换旧片段后添加片段但调用 onDestroyView
- c++ - std::pmr::memory_resource 如何与 std::container 产生性能差异?
- python - 在从作业中创建 pos 时,由于并发更新而无法序列化访问
- javascript - SAPUI5 ProcessFlow - 仅通道
- java - JPA + @OneToMany + DELETE:如果我稍后访问父项,则不会删除项目
- javascript - Chrome 主题 - 动态旋转图像
- python - 这种组合对于使用 Python 3.8 和 openCV 进行图像拼接是否可行?
- python - 在一个巨大的 numpy 数组中查找 N 个元素的位置(索引)
- python - 如何使用 python 访问已安装的 NVIDIA JETSON AGX XAVIER 网络摄像头?