将结构写入.dat文件

时间:2012-08-26 20:38:33

标签: c

代码

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);
}
}

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

2 个答案:

答案 0 :(得分:3)

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

strcpy(CurStudent.name, "Root");
fwrite(&CurStudent, sizeof(CurStudent), 1, fp);
       ^

答案 1 :(得分:2)

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