C 将结构写入.dat文件

C 将结构写入.dat文件,c,C,代码 我遇到了两个错误,一个是我无法将“Root”(const char[15])分配给name(char[256]),当使用fwrite时,我得到“无法将参数1从'Student'转换为'const void'” 字符串不超过char数组。C中有一些特殊的函数,它们以str开头并帮助处理这些问题 获取结构变量的地址,fwrite需要一个指向数据的指针 字符串不超过char数组。C中有一些特殊的函数,它们以str开头并帮助处理这些问题 获取结构变量的地址,fwrite需要一个指向数据的指针 不能

代码

我遇到了两个错误,一个是我无法将“Root”(const char[15])分配给name(char[256]),当使用fwrite时,我得到“无法将参数1从'Student'转换为'const void'”

  • 字符串不超过
    char
    数组。C中有一些特殊的函数,它们以
    str
    开头并帮助处理这些问题
  • 获取结构变量的地址,
    fwrite
    需要一个指向数据的指针
  • 字符串不超过
    char
    数组。C中有一些特殊的函数,它们以
    str
    开头并帮助处理这些问题
  • 获取结构变量的地址,
    fwrite
    需要一个指向数据的指针

  • 不能像C中那样分配给数组,
    fwrite
    需要指针,不能传递结构。那么:

    struct Student
    {
    unsigned int ID;
    char name[256];
    int FileLocLeft;
    int FileLocRight;
    int FileLocParent;
    };
    
    void main()
    {
    Student CurStudent;
    
    FILE* fp = fopen("d:\\students.bat", "w");
    if(fp == NULL)
    {
        printf("File not found\n");
    }
    else
    {
        fseek(fp,0,SEEK_SET);
        CurStudent.FileLocLeft = 0;
        CurStudent.FileLocParent = 0;
        CurStudent.FileLocRight = 0;
        CurStudent.ID = 0;
        CurStudent.name = "Root";
        fwrite(CurStudent,sizeof(Student),1,fp);
    }
    }
    

    不能像C中那样分配给数组,
    fwrite
    需要指针,不能传递结构。那么:

    struct Student
    {
    unsigned int ID;
    char name[256];
    int FileLocLeft;
    int FileLocRight;
    int FileLocParent;
    };
    
    void main()
    {
    Student CurStudent;
    
    FILE* fp = fopen("d:\\students.bat", "w");
    if(fp == NULL)
    {
        printf("File not found\n");
    }
    else
    {
        fseek(fp,0,SEEK_SET);
        CurStudent.FileLocLeft = 0;
        CurStudent.FileLocParent = 0;
        CurStudent.FileLocRight = 0;
        CurStudent.ID = 0;
        CurStudent.name = "Root";
        fwrite(CurStudent,sizeof(Student),1,fp);
    }
    }
    

    不要写入
    void main()
    ;它返回一个
    int
    。除非您使用的是C99或C11,否则需要显式添加
    返回0
    main()
    的末尾。此外,还应检查数据是否已成功写入。知道数据文件是否干净至关重要。不要写入
    void main()
    ;它返回一个
    int
    。除非您使用的是C99或C11,否则需要显式添加
    返回0
    main()
    的末尾。此外,还应检查数据是否已成功写入。知道数据文件是否干净至关重要。