记录数据生成文件的问题(2个)
(1)首先,这个代码完全正确,然后问题就出来了,我老师也不懂为什么出错!!但是他会把它整好了……而且最终代码完全没变(运行环境VC++6.0)#include<stdio.h>
#include<stdlib.h>
#define SIZE 10
struct Student
{
char name[20];
int num;
int age;
float grade;
}stud[SIZE];
void save()
{
FILE *fp;
int i;
if((fp=fopen("st.dat","wb"))==NULL)
{
printf("不能打开这个文件\n");
exit(0);
}
for(i=0;i<SIZE;i++)
if(fwrite(&stud[i],sizeof(struct Student),1,fp)!=1)
printf("文件写入错误\n");
fclose(fp);
}
int main ()
{
int i;
printf("输入学生数据:\n姓名\t学号\t年龄\t分数\n");
for(i=0;i<SIZE;i++)
scanf("%s%d%d%f",stud[i].name,&stud[i].num,&stud[i].age,&stud[i].grade);//关键就是这啊!!没有%f一切正常,但是有它在录完第一组数据回车就出错了,向高手求解
return 0;
}
(2)如果需要局部修改数据要怎么做啊??(下面这个仅仅是查看结果而已)
#include<stdio.h>
#include<stdlib.h>
struct Student
{
char name[20];
int num;
int age;
float grade;
};
int main ()
{
struct Student stud[10];
FILE *fp;
int i;
if((fp=fopen("st.dat","rb"))==NULL)
{
printf("不能打开这个文件\n");
exit(0);
}
for(i=0;i<10;i++)
{
fread(&stud[i],sizeof(struct Student),1,fp);
printf("%-10s %4d %4d %4.2f\n",stud[i].name,stud[i].num,stud[i].age,stud[i].grade);
}
fclose(fp);
return 0;
}