回复 19楼 九转星河
#include<stdio.h>
#define SIZE 4
struct student
{
char name[10];
char num[5];
char age[5];
char addr[15];
}stu[SIZE];
void save()
{
FILE * fp;
int i;
if((fp=fopen("d:\\c\\student","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
for(i=0;i<SIZE;i++)
{
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("write error\n");
}
fclose(fp);
}
void output()
{
FILE * fp;
int i;
if((fp=fopen("d:\\c\\student","rb"))==NULL)
{
printf("cannot open file\n");
return;
}
for(i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
printf("%s
%s
%s
%s\n",stu[i].name,stu[i].num,stu[i].age,stu[i].addr);
}
}
int main()
{
FILE * fp;
int i;
for(i=0;i<SIZE;i++)
scanf("%s%s%s%s",stu[i].name,stu[i].num,&stu[i].age,stu[i].addr);
save();
output();
return 0;
}//这是创建student2并向其写入内容的代码
#include<stdio.h>
#define SIZE 4
struct student
{
char name[10];
char num[5];
char age[5];
char addr[15];
}stu[SIZE];
void output()
{
FILE * fp;
int i;
if((fp=fopen("d:\\c\\student","r"))==NULL)
{
printf("cannot open file\n");
return;
}
for(i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
printf("%s
%s
%s
%s\n",stu[i].name,stu[i].num,stu[i].age,stu[i].addr);
}
fclose(fp);
}//这是以“只读”方式打开文件,并将文件内容输入内存输出的代码
PS:我把结构体的age成员的类型由int
改成 char,结果输出结果与文件内容一致。
为什么用int就不行呢?