C:一个用于读取的指针和一个用于更新同一文件的指针

吉列尔莫·瓜达斯塔尼奥(Guillermo Guardastagno)

我需要构建一个读取每个记录的程序,并根据该记录信息来更新同一文件上的其他一些记录。为此,我正在考虑采用这种方法:

int main(int argc, char *argv[]) {
    FILE *my_file;
    int files_read;
    struct my_struct an_struct;

    my_file = fopen("myfile.dat", "rb");

    files_read = fread(&an_struct, sizeof(struct my_struct), 1, my_file);
    printf("main->files_read: %d \n", files_read); //This prints one

    while (files_read == 1) {
        do_update();
        files_read = fread(&an_struct, sizeof(struct my_struct), 1, my_file);
        printf("main->files_read: %d \n", files_read); //This prints one
    }

    fclose(archivo_paises);
    return 0;
}

在main函数中,我正在读取文件的内容,每次调用时,都会read得到一个响应,直到到达文件末尾。问题出在do_update函数中:

void do_update() {
    FILE *my_file;
    int files_read;
    struct my_struct an_struct;
    struct my_struct another_struct;

    my_files = fopen("myfile.dat", "wb+"); //Using rb+ solves it

    files_read = fread(&an_struct, sizeof(struct my_struct), 1, my_file);
    printf("do_update->files_read: %d \n", files_read); 
    //This printed zero!. Prints one using rb+

    while (files_read == 1) { //This never gets executed. Unless you use rb+

        if(something){
            fwrite(&another_struct, sizeof(struct my_struct), 1, my_file); 
            // Using rb+, this returns zero and didn't update
        }
        files_read = fread(&an_struct, sizeof(struct my_struct), 1, my_file);
        printf("do_update->files_read: %d \n", files_read);     
    }

    fclose(my_file);
}

发生的情况是该files_read变量在read调用后获得的值为零,因此永远不会执行更新文件的逻辑。

为什么read打开的文件时返回零wb+

更新:使用rb+作为文件模式do_update()的作品,但现在的调用fwrite()总是返回零,并没有更新文件。是与模式有关吗?

道格·柯里

fwrite正在将文件中的位置移动到文件末尾。fread再没有什么阅读。

使用fgetpos将文件保存位置之前fwrite,和fsetpos设置后的位置后面fwrite

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一个bash脚本,用于连接字符串并使用bash脚本在同一文件中编辑一行

来自分类Dev

Django如何从同一文件夹下的另一个文件导入文件?

来自分类Dev

一个bash脚本,用于将文件夹的所有文件复制到Desktop中的唯一文件夹

来自分类Dev

从同一文件夹中调用另一个.bat文件?

来自分类Dev

在同一文件夹/目录位置的一个位置上创建文件副本

来自分类Dev

在再次实例化另一个文件后,StreamWriter继续写入同一文件

来自分类Dev

从同一文件夹中的另一个文件导入功能

来自分类Dev

如何从Javascript的同一文件夹中的各种文件中导入一个功能?

来自分类Dev

一个指针,用于不同类型的Fortran

来自分类Dev

连续上传同一文件时,为什么会收到一个空的InMemoryUploadedFile对象

来自分类Dev

Laravel,如何使用另一个控制器到同一文件夹

来自分类Dev

通过perl在同一文件上的一个衬套从solaris中删除^ M

来自分类Dev

从spring-servlet.xml访问同一文件夹中的另一个xml

来自分类Dev

如何根据行的第一个单词替换同一文件中的多个模式?

来自分类Dev

给定一个加密文件和同一文件的非加密版本,可以轻松恢复加密密钥吗?

来自分类Dev

文件中的最后一个CSS规则被同一文件中的上一个规则覆盖

来自分类Dev

如何使用spark(scala)读取和写入(更新)同一文件

来自分类Dev

如何在同一文件夹中调用一个asmx,但不能调用另一个?

来自分类Dev

一个文件中的打印行与另一文件中的模式匹配

来自分类Dev

反映一个文件在另一文件中的种类

来自分类Dev

将一个文件的列与另一文件的行进行比较

来自分类Dev

将特定行从一个文件写入另一文件

来自分类Dev

如何比较一个文件的多列和另一文件的一列并显示第二个文件的匹配项?

来自分类Dev

作为for循环的一部分写入同一文件会生成一个空文件

来自分类Dev

Windows窗体c#在同一窗体上读取和写入同一文件错误?

来自分类Dev

是否有一个文件系统,当不同的用户访问同一文件路径时,该文件路径会转移到其他文件?

来自分类Dev

AWK:读取所有行并完全基于另一文件的每一行来处理一个文件

来自分类Dev

从文件读取后写回同一文件

来自分类Dev

从文件读取后写回同一文件

Related 相关文章

  1. 1

    一个bash脚本,用于连接字符串并使用bash脚本在同一文件中编辑一行

  2. 2

    Django如何从同一文件夹下的另一个文件导入文件?

  3. 3

    一个bash脚本,用于将文件夹的所有文件复制到Desktop中的唯一文件夹

  4. 4

    从同一文件夹中调用另一个.bat文件?

  5. 5

    在同一文件夹/目录位置的一个位置上创建文件副本

  6. 6

    在再次实例化另一个文件后,StreamWriter继续写入同一文件

  7. 7

    从同一文件夹中的另一个文件导入功能

  8. 8

    如何从Javascript的同一文件夹中的各种文件中导入一个功能?

  9. 9

    一个指针,用于不同类型的Fortran

  10. 10

    连续上传同一文件时,为什么会收到一个空的InMemoryUploadedFile对象

  11. 11

    Laravel,如何使用另一个控制器到同一文件夹

  12. 12

    通过perl在同一文件上的一个衬套从solaris中删除^ M

  13. 13

    从spring-servlet.xml访问同一文件夹中的另一个xml

  14. 14

    如何根据行的第一个单词替换同一文件中的多个模式?

  15. 15

    给定一个加密文件和同一文件的非加密版本,可以轻松恢复加密密钥吗?

  16. 16

    文件中的最后一个CSS规则被同一文件中的上一个规则覆盖

  17. 17

    如何使用spark(scala)读取和写入(更新)同一文件

  18. 18

    如何在同一文件夹中调用一个asmx,但不能调用另一个?

  19. 19

    一个文件中的打印行与另一文件中的模式匹配

  20. 20

    反映一个文件在另一文件中的种类

  21. 21

    将一个文件的列与另一文件的行进行比较

  22. 22

    将特定行从一个文件写入另一文件

  23. 23

    如何比较一个文件的多列和另一文件的一列并显示第二个文件的匹配项?

  24. 24

    作为for循环的一部分写入同一文件会生成一个空文件

  25. 25

    Windows窗体c#在同一窗体上读取和写入同一文件错误?

  26. 26

    是否有一个文件系统,当不同的用户访问同一文件路径时,该文件路径会转移到其他文件?

  27. 27

    AWK:读取所有行并完全基于另一文件的每一行来处理一个文件

  28. 28

    从文件读取后写回同一文件

  29. 29

    从文件读取后写回同一文件

热门标签

归档