永发信息网

c语言将结构体写入文件

答案:3  悬赏:50  手机版
解决时间 2021-04-04 14:47
c语言将结构体写入文件
最佳答案
整个结构体写入

读出来时整个结构体读出

类型没什么关系 二进制读写还管你变量什么类型追问可以把具体的程序告诉我吗追答#include

struct stu
{
char name[10];
int num;
int age;
char addr[15];
}boya[2],boyb[2],*pp,*qq;

void main()
{
FILE *fp;
char ch;
int i;
pp=boya;
qq=boyb;
if((fp=fopen("d:\\stu_list","wb+"))==NULL)
{
printf("Cannot open file strike any key exit!");
}
printf("\ninput data\n");
for(i=0;i<2;i++,pp++)
{
scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);
}
pp=boya;
fwrite(pp,sizeof(struct stu),2,fp);
//将文件指针重新指向一个流的开头
rewind(fp);
fread(qq,sizeof(struct stu),2,fp);
printf("\n\nname\tnumber age addr\n");
for(i=0;i<2;i++,qq++)
{
printf("%s\t%5d%7d %s\n",qq->name,qq->num,qq->age,qq->addr);
}
fclose(fp);

}追问这里结构体中不是只有int型和char型,
struct stu
{
char name[10];
int num;
int age;
char addr[15];
}boya[2],boyb[2],*pp,*qq;

如果是
struct stu
{
char name[10];
int age;
float height;
}
呢追答你脑子转不过弯儿啊?

我在第三行不是都说过了吗

结构体里的变量类型你随便改

我就给你举个例子

现在是把结构体里的数据整体写入

跟结构体里面的数据类型没关系的 你明白么?追问不好意思,我c语言不怎么懂,为了交作业,你看看我的程序,我不知道该怎么改追答贴上来追问补充里追答按最佳答案修改是不对的

按下面这样修改就对了 而且你绝对不知道为什么

知道里也没几个人知道是为什么 哈哈哈哈

#include
#include
#define SIZE 100
typedef struct market_st
{
char name[10];
int number;
float price;
char discount[10];
}M_LIST ;
void acceptdata(M_LIST m_list[]);
int main()
{
FILE *fp;
M_LIST m_list[SIZE];
float test =3.1415926; //就加了个这个
if((fp=fopen("d:\\market.dat","wb"))==NULL)
{
printf("\ncannot open file\n");
exit(0);
}
acceptdata(m_list);
if(fwrite(m_list,sizeof(M_LIST),SIZE,fp)!=SIZE)
printf("file write error\n");
fclose(fp);
return 0;
}
void acceptdata(M_LIST m_list[])
{
int i;
for(i=0;i {
printf("请输入商品名称:");
scanf("%s",&m_list[i].name);
printf("请输入商品编号:");
scanf("%d",&m_list[i].number);
printf("请输入商品价格:");
scanf("%f",&m_list[i].price);
printf("请输入商品折扣情况:");
scanf("%s",&m_list[i].discount);
}
}

大半夜的帮你弄出来了

明天再告诉你为什么追问真的可以耶!!为什么呢,一会给你追加10分追答一共才15分

我回答这个不是为了分

这个问题是 C语言中 float类型的 lazy load

嗯 google上的专家级回答

经常会导致莫名其妙的问题
全部回答
谁说fwrite只能写整形的。

struct A
{
float ax;
char bx[5];
int cx;
}

A a;
fwrite(&a, sizeof(a), 1, fp);
整体写入,
也可以分开写,fwrite(&a.ax, sizeof(float), 1, fp);
...
自己想怎么写,就怎么写。追问不好意思,我c语言不怎么懂,为了交作业,你看看我的程序,我不知道该怎么改追答程序没问题,我把SIZE修改为1后运行,一切正常,并在d:\market.dat文件生成,打开可以看到保存到文件的部分内容。
谁说fwrite只能写入整形的
fwrite((void*)&variable, 1, sizeof(float), fp);
写结构体入文件时要格外注意对齐格式,最好可以单元素写,单元素读。整个结构体写入的话,如果读出程序对齐格式与写入程序不同,那读出来的数据一定是错的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
宋太祖976年去世,宋太宗997年去世,宋真宗10
太阳能热水器洗澡时进水罚阀门需要关闭吗
【求助】小草苗能深水样吗?
过去永远是画面,只是浪漫的时间………这歌名
烟,对女人来说.究竟意味着什么?
科任工作考核评语,专业技术职务任职考核评语
单选题Myfatheris175________.A.centimetreh
这是火山小视频里的?
吃芋头有什么好处和坏处?
我想找一些简单的学跳舞的视频
起亚k2改装导航好不好
从玉门到甘南旅游的最佳路线
下图是某个化学反应的微观模拟示意图。从图中
铁梨木2个的老料满星手串多少钱
经期时间长怎么调理?
推荐资讯
Stevie Wonder的音乐风格是?
怎样念雨宝陀罗尼咒心/怎样念雨宝陀罗尼咒心
梦幻西游藏宝阁刚买的号能转门派吗?
三能六寸心形蛋糕模与六寸圆模容量一样吗
js里的数组怎么循环显示
带来几张你家人或朋友的照片.____a_____photo
半夜醒来睡不着的句子,为什么人会做梦,而又
1000千伏高压电塔线下多少米之内不能有建筑
我今年新买来的oppon1有4个月了 我一直都感觉
什么是解码器
近年来,人类探索太空热情空前高涨,研究的新
洗澡时将11°C的冷水与66°C的热水充分混合成
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?