文件的读写问题
这是结构体定义
typedef struct student{
int num;
char name[10];
float math;
float english;
float cProgramming;
}STU;
这是读文件部分的代码:
while(!feof(fp)){
ps=(STU *)malloc(sizeof(STU));
fscanf(fp,"%d%s%f%f%f",&ps->num,ps->name,&ps->math,&ps->english,&ps->cProgramming);
printf("学号:%d\n",ps->num);
printf("姓名:%s\n",ps->name);
printf("数学成绩:%f\n",ps->math);
printf("英语成绩:%f\n",ps->english);
printf("c语言成绩:%f\n",ps->cProgramming);
free(ps);
}
这是文件的内容:
1whj100.000000100.000000100.000000
2byw90.00000090.00000090.000000
我是用fprintf来写进文件的,这样读文件会出现错误,num读到的是正确的,但name读到的就是“whj100.000”,我的理解是因为name是长度为10的数组,所以读了10个字符,但是它不是字符串吗?不应该是读九个字符然后加个\0吗?还有就是怎么解决读入错误。。。
[解决办法]
- C/C++ code
while(!feof(fp)){ps=(STU *)malloc(sizeof(STU));fscanf(fp,"%d%s%f%f%f",&ps->num,ps->name,&ps->math,&ps->english,&ps->cProgramming);printf("学号:%d\n",ps->num);printf("姓名:%s\n",ps->name);printf("数学成绩:%f\n",ps->math);printf("英语成绩:%f\n",ps->english);printf("c语言成绩:%f\n",ps->cProgramming);free(ps); }