C 将结构写入.dat文件
代码 我遇到了两个错误,一个是我无法将“Root”(const char[15])分配给name(char[256]),当使用fwrite时,我得到“无法将参数1从'Student'转换为'const void'”C 将结构写入.dat文件,c,C,代码 我遇到了两个错误,一个是我无法将“Root”(const char[15])分配给name(char[256]),当使用fwrite时,我得到“无法将参数1从'Student'转换为'const void'” 字符串不超过char数组。C中有一些特殊的函数,它们以str开头并帮助处理这些问题 获取结构变量的地址,fwrite需要一个指向数据的指针 字符串不超过char数组。C中有一些特殊的函数,它们以str开头并帮助处理这些问题 获取结构变量的地址,fwrite需要一个指向数据的指针 不能
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()
的末尾。此外,还应检查数据是否已成功写入。知道数据文件是否干净至关重要。