为什么rewind()后跟fscanf()不能反映磁盘上所做的更改?

烟火

我反复使用fscanf阅读先前打开的文件rewind

#include <stdio.h>
#include <errno.h>
#include <unistd.h>

void read_opened_file(FILE *file, int *value)
{
   errno = 0;
   fscanf(file, "%d", value);
   if (errno != 0) perror("fscanf error");
   
   errno = 0;
   rewind(file);
   if (errno != 0) perror("rewind error");
}

int main(int argc, char* argv[])
{
   int value = 0;
   FILE *file = fopen(argv[1], "r");
   
   errno = 0;
   if (setvbuf(file, NULL, _IONBF, 0) != 0) perror("setvbuf error");
   
   for (int i = 0; i < 10; ++i)
   {
      read_opened_file(file, &value);
      printf("value = %d\n", value); fflush(stdout);
      sleep(1);
   }

   fclose(file);
   return 0;
}

然而,由幕后磁盘上的文件所做的任何更改geditecho >cp不会反映:该功能保持报告第一(缓存?)值读取(errno未设置)。

  • 当我setvbuf(file, NULL, _IONBUF, 0);按照此处的建议进行操作时,反映cpecho >所做的更改,但是gedit仍然没有反映出由所做的更改
  • 当我使用fopen,并fclose如预期每次循环的一切。

如何解决上面的代码没有 fopenfclose每一次?

大卫·施瓦兹

你不能 gedit程序并没有改变文件。那根本不是它的工作原理。因此,您将看不到文件的任何更改。

gedit通过将旧文件替换为新文件来完成更改必须关闭旧文件并打开新文件才能查看gedit所做的更改

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么对变量所做的更改反映在列表中?

来自分类Dev

为什么Hibernate会话未反映应用程序外部所做的更改

来自分类Dev

为什么在指令的链接函数中对$ scope所做的更改未反映在UI上?

来自分类Dev

为什么eclipse不能重新编译对Java类所做的最后更改?

来自分类Dev

为什么eclipse不能重新编译对Java类所做的最后更改?

来自分类Dev

CSS-为什么我的浏览器无法反映服务器上所做的任何更改?

来自分类Dev

为什么看不到对特定文件所做的更改?

来自分类Dev

为什么看不到对特定文件所做的更改?

来自分类Dev

为什么对/ etc / passwd所做的更改不生效?

来自分类Dev

绘画时不会反映对图像表面所做的更改

来自分类Dev

无法反映我在angularjs中的$ rootScope中所做的更改

来自分类Dev

创建的PDF不反映对原始文档所做的更改

来自分类Dev

为什么我不能使用重定向将Vim的标准输入更改为磁盘上的某些文件?

来自分类Dev

python为什么看不到我对代码所做的更改?

来自分类Dev

为什么对函数内部的指针所做的更改在函数外部不可见?

来自分类Dev

为什么对状态所做的更改不会在componentDidMount生命周期中显示?

来自分类Dev

为什么我的if语句不响应我对变量所做的更改?

来自分类Dev

为什么我对sshd_config文件所做的更改无法保存?

来自分类Dev

为什么即使在函数返回后对单指针所做的更改仍然存在

来自分类Dev

为什么对表单输入值所做的更改未显示在Javascript中?

来自分类Dev

将网页部署到firebase主机并不能反映所做的所有更改,具体取决于加载该页面的设备。颤振网

来自分类Dev

更改ViewModel对象不会反映对视图所做的更改

来自分类Dev

还原git mergetool所做的更改需要什么命令?

来自分类Dev

调用什么函数来撤消在UITextField中所做的更改?

来自分类Dev

调用什么函数来撤消在UITextField中所做的更改?

来自分类Dev

如果在写之前打开Lucene DirectoryReader,为什么看不到IndexWriter所做的任何更改?

来自分类Dev

为什么对传递给闭包的对象所做的更改会在全局范围内持续存在?

来自分类Dev

除非我添加ToList(),否则为什么在foreach中对Linq分组选择所做的更改会被忽略?

来自分类Dev

chrome为什么会显示弹出警告:“您所做的更改可能尚未保存。” 在每个页面上退出?

Related 相关文章

  1. 1

    为什么对变量所做的更改反映在列表中?

  2. 2

    为什么Hibernate会话未反映应用程序外部所做的更改

  3. 3

    为什么在指令的链接函数中对$ scope所做的更改未反映在UI上?

  4. 4

    为什么eclipse不能重新编译对Java类所做的最后更改?

  5. 5

    为什么eclipse不能重新编译对Java类所做的最后更改?

  6. 6

    CSS-为什么我的浏览器无法反映服务器上所做的任何更改?

  7. 7

    为什么看不到对特定文件所做的更改?

  8. 8

    为什么看不到对特定文件所做的更改?

  9. 9

    为什么对/ etc / passwd所做的更改不生效?

  10. 10

    绘画时不会反映对图像表面所做的更改

  11. 11

    无法反映我在angularjs中的$ rootScope中所做的更改

  12. 12

    创建的PDF不反映对原始文档所做的更改

  13. 13

    为什么我不能使用重定向将Vim的标准输入更改为磁盘上的某些文件?

  14. 14

    python为什么看不到我对代码所做的更改?

  15. 15

    为什么对函数内部的指针所做的更改在函数外部不可见?

  16. 16

    为什么对状态所做的更改不会在componentDidMount生命周期中显示?

  17. 17

    为什么我的if语句不响应我对变量所做的更改?

  18. 18

    为什么我对sshd_config文件所做的更改无法保存?

  19. 19

    为什么即使在函数返回后对单指针所做的更改仍然存在

  20. 20

    为什么对表单输入值所做的更改未显示在Javascript中?

  21. 21

    将网页部署到firebase主机并不能反映所做的所有更改,具体取决于加载该页面的设备。颤振网

  22. 22

    更改ViewModel对象不会反映对视图所做的更改

  23. 23

    还原git mergetool所做的更改需要什么命令?

  24. 24

    调用什么函数来撤消在UITextField中所做的更改?

  25. 25

    调用什么函数来撤消在UITextField中所做的更改?

  26. 26

    如果在写之前打开Lucene DirectoryReader,为什么看不到IndexWriter所做的任何更改?

  27. 27

    为什么对传递给闭包的对象所做的更改会在全局范围内持续存在?

  28. 28

    除非我添加ToList(),否则为什么在foreach中对Linq分组选择所做的更改会被忽略?

  29. 29

    chrome为什么会显示弹出警告:“您所做的更改可能尚未保存。” 在每个页面上退出?

热门标签

归档