这样子写,即使写入成功,也也是运行写入失败!请问该怎么改
完整代码可以查看我文章里的 学生成绩管理系统
完整代码可以查看我文章里的 学生成绩管理系统
fprintf函数如果写入失败返回负值,成功的话返回实际写入的字节数。
题主的代码问题出在 if(ret!=sizeof(struct student)),在博文中结构体的定义如下:
struct student{
int id; //学号
char name[20]; //姓名
char sex[5]; //性别
float grade1; //高等数学
float grade2; //大学英语
float grade3; //大学物理
float avg; //平均分
float sum; //总分
};
先不论结构体的实际长度,sizeof(struct student)求出的是student结构体占用的内存空间大小,是一个定值;而ret是fprintf实际写入文件的字符数,是变化的。例如int类型占用内存是4个字节,而整数可以是1位数,也可能是5位数,所以ret和sizeof(struct student)基本上是不会相等的。