回复 28楼 TonyDeng
你给示范的程序,里面最核心的一段应该是这个函数
void Update_Data(const char* filename, const Student* student, size_t index)
{
FILE* file;
if (fopen_s(&file, filename, "rb+") == 0)
{
size_t count;
fread(&count, sizeof(count), 1, file);
fseek(file, (index - 1) * sizeof(Student), SEEK_CUR);
fwrite(student, sizeof(Student), 1, file);
fclose(file);
}
else
{
printf_s("File %s update failure.\n", filename);
}
}
这个函数我是这样理解的,用fseek函数把文件读取的内部指针弄到我们想要改的数据那,然后重新把数据输入进去,输入多少数据,就覆盖多少数据,类似于word文档的改写模式。不知道这样理解对不对?
这里面我还有个疑问,就是定义count这个参数是用来干嘛的?
还有整个程序里面很多函数都出现fread(&count, sizeof(count), 1, file);,这一语句的意思是不是“读取一个‘sizeof(count)’字节的数据项到count里面”?我查一下,应该是这样的意思。那么按照这样理解count这个参数存储的东西就是文本文件里面的第一个值。可是我觉得这里count应该是代表文件里面有多少个“组”,但是这样我就没办法理解fread(&count, sizeof(count), 1, file);这一个语句了。
还望你能帮我理解到本质。