改成这样
#include
#include
#define N 8
typedef struct
{
char name[10], num[6], sex[8];
int age, mark;
}STU;
void savestu() //定义 savestu 函数
{
STU s[N]; //指针数组
FILE *fp; //定义一个指向文件流的指针
int i;
if ((fp = fopen("student.bin", "wb")) == NULL) //以指针建立打开文件,只写,选择结构语句
{
printf("cannot creat this file!\n");
exit(0);
}
printf("input %d student record :Num\tName\tSex\tAge\tMark\n", N);
for (i = 0; i
scanf("%s%s%s%d%d", s[i].num, s[i].name, s[i].sex, &s[i].age, &s[i].mark);
fwrite(s + i, sizeof(STU), 1, fp); //向文件写入数据块
}
fclose(fp);
}
int main(void)
{
int i;
STU s[N];
FILE *fp; //以指针查询学生信息
savestu();
if ((fp = fopen("student.bin", "rb")) == NULL) //选择结构语句
{
printf("cannot open this file!\n");
exit(0);
}
for (i = 0; i
fseek(fp, i*sizeof(STU), 0); //定位指针
fread(s + i, sizeof(STU), 1, fp); //读取数据
printf("%s\t%s\t%s\t%d\t%d\n", s[i].num, s[i].name, s[i].sex, s[i].age, s[i].mark);
}
return 0;
}