关于fwrite和fread函数的使用。望指点,谢谢!

koo8 koo8 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
最近在温习c时,写了个小程序要实现的功能:输入三条记录写入文件stu1中,
然后读取显示,在wintc中,调试通过,显示结果总读不对。
程序如下:
/* NONAME.C -- file write and read */

#include "stdio.h"
#include "conio.h"
#include "malloc.h"

struct stu
{
char sno[2];
char sname[3];
int age;
};


main()
{

int i;
struct stu *s=(struct stu*)malloc(sizeof(struct stu));
FILE *fpw,*fpr;

printf("\n\n======write======\n");

fpw=fopen("stu1","ab");
if(fpw)
{
for(i=0;i<3;i++)
{
printf("sno:");
scanf("%s\n",&s->sno);

printf("sname:");
scanf("%s\n",&s->sname);

printf("age:");
scanf("%d\n",&s->age);
/*
printf("sno,sname,age:\n");
scanf("%s,%s,%d\n",&s->sno,&s->sname,&s->age);
s->sno[2]='\0';
s->sname[3]='\0';
*/
fwrite(s,sizeof(struct stu),1,fpw);
}
}
else
{
printf("open failed!");
exit(0);
}
/**/
printf("\n\n======read======\n\n\n");

fpr=fopen("stu1","rb");
if(fpr)
{
i=0;
while(!feof(fpr))
{
fseek(fpr,i*sizeof(struct stu),0);
fread(s,sizeof(struct stu),1,fpr);
printf("sno:%s\n",s->sno);
printf("sname:%s\n",s->sname);
printf("age:%d\n",s->age);

i++;
}
}
else
{
printf("open failed!");
exit(0);
}
printf("\n==over==\n");
free(s);

getch();
}
...全文
评论 12
收藏 已收藏
分享
返回顶部
koo8
C语言 70,039 成员 243,237 内容