问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于文件的读写问题

发布网友 发布时间:2022-04-26 00:29

我来回答

1个回答

热心网友 时间:2023-10-24 19:26

我大致看了一下,找到一个很明显到错误!!!
void input()
{
int i;

printf("please ipiut the information of the students:\n");
for(i=0;i<M;i++)
scanf("%s%d%d", &stu[i].name, &stu[i].num, &stu[i].score);//把M换成i,因为你到循环变量是i
printf("the information has been inported.\n\n");

}
void load(char name[])
{
FILE *p;
struct student stu1[M];
int i;

p=fopen( name,"wb");

printf("the information of the file is :\n");

fread( stu1, sizeof(struct student), M, p);
for (i=0;i<M;i++)
printf("%s%d%d\n", stu1[i].name, stu1[i].num, stu1[i].score); //这里输出到时候也一样

fclose (p);
}

补充回答:
void load(char name[])
{
FILE *p;
struct student stu1[M];
int i;

p=fopen( name,"wb");//你的这个函数是读取文件数据,打开方式应为"rb","wb"是写的方式

printf("the information of the file is :\n");

fread( stu1, sizeof(struct student), M, p);
for (i=0;i<M;i++)
printf("%s%d%d\n", stu1[M].name, stu1[M].num, stu1[M].score);

fclose (p);
}

还有你的这个程序有很多地方容易导致错误!比如说scanf("%s%d%d", &stu[M].name, &stu[M].num, &stu[M].score); name是字符数组的数组名,本身就代表该数组的首地址,没必要再取其地址了!虽然你这样写运行时没有问题,但难保你能用的顺利!fread和fwrite函数处理数据的效率比较高,但是这两个函数除非你用的熟练,否则很容易就出错!而且fwrite函数写入的是二进制数据,没办法核对你写入文件的数据是否正确!所以对于小程序来说尽量使用fscanf和fprinf两个函数处理数据,易于检查!

程序我帮你改好了,你自己试一下!
#include "stdio.h"
#include "conio.h"
#define M 3

struct student
{
char name [20];
int num;
int score;
} stu[M];

void main()
{
void input();
void save(char name[]);
void load(char name[]);

char name[20];

input();

printf("please input the name of the saved file:");
scanf("%s",name);

save(name);
load(name);

getch();
}
void input()
{
int i;

printf("please ipiut the information of the students:\n");
for(i=0;i<M;i++)
scanf("%s%d%d", stu[i].name, &stu[i].num, &stu[i].score);
printf("the information has been inported.\n\n");
}
void save(char name[])
{
int i;
FILE *p;
p=fopen( name,"wb");
fwrite( stu, sizeof(struct student), M, p);
printf("the file has been saved.\n\n");

fclose(p);
}

void load(char name[])
{
FILE *p;
struct student stu1[M];
int i;

p=fopen( name,"rb");

printf("the information of the file is :\n");

fread( stu1, sizeof(struct student), M, p);
for (i=0;i<M;i++)
printf("%4s%4d%4d\n", stu1[i].name, stu1[i].num, stu1[i].score);

fclose (p);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如果只有铬黑T试剂,能否测定钙离子,如何测定? 金银花茶的做法窍门 怎样制作金银花茶 怎么快速取消订单 有关"听"开头的成语 王卡看腾讯视频不显示免流 大王卡腾讯视频不显示免流 谁给推荐几部国产的好看的、卟幼稚的、新鲜的动画片 好看的、不幼稚的国产动画片有哪些? 太早的不要,要连续动画片 上传速度慢是什么原因? 儿子12岁生日对他说的话 同学12岁生日祝福语,男短点儿,普通些 给需要装修房子的潜在客户发短信 C语言 文件的读写 对12岁同学的祝福语? 如何跟潜在客户沟通? 微信怎样进行短信群发? java实现文件的读写,是叫啥? 在C++中如何实现文件的读写? 关于文件的读写!!! 如何跟自己陌生的潜在客户聊天呢 感觉没什么可聊的 把天都聊死了 怎么给潜在客户发信息,内容该怎么写 新浪邮箱可以注销掉吗?我想换个名 如何传递信息给潜在客户 如何注销新浪邮箱和新浪微博? 我有一个闲置的免费新浪邮箱,不想用... 如何通过钻石鞋看出你的性格缺陷? 文件!的英语怎么读写? 同学十二岁生日祝福语 怎样寻找自己的心理,性格上的缺陷 不是微信好友怎么样才可以看到对方的? c++如何进行文件读写操作 同学孩子12岁生日祝福语 节日怎么给潜在客户发短信呢 祝福12岁男孩生日的句子 C语言 文件读写 同学12岁生日祝福语,男 淘宝店开张怎么在潜在客户微信群里发消息 C语言的文件读写 如何开发潜在客户 圆锁开锁:一开,聪明伶俐 ;二开,学业有成;三开,满堂富贵……后面是什么?急急急。谢谢谢…… 如何发短信给潜在客户 男同学过12岁生日应该说什么祝福语? 农村路灯坏照哪个部门, 恩捷股份股票代码 新店开业给新老顾客发信息怎么发 祝同学十二圆锁生日祝福语 修村里路灯走平台需要什么手续 恩捷股份为什么一路下跌?2021年恩捷股份业绩预测?恩捷股份(002812)? 同事离职,我该怎么给接过来的潜在客户发邮件 给男同学的12岁生日贺词