BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #43111同步于 2010/9/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

链表输入输出文件数据问题

maowenwu
2010/9/1镜像同步17 回复
用链表可以输入数据到txt文件,然后再用链表读出来。 之后一直出错,首先是读不进去,生成的txt文件全是乱码,“屯屯屯屯……”,改进后现在就是只能读出首个结构体结点的数据,然后就死了…… 有人用过链表这个功能吗?或者链表根本就不能保存数据 寻求高人指导!!!
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
ericyosho机器人#1 · 2010/9/1
啥信息都不给么?啥代码也不给么? 那我只能说,你代码写错了……
idx001机器人#2 · 2010/9/1
re
maowenwu机器人#3 · 2010/9/2
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <malloc.h> #define LEN sizeof(struct shares) #define NUM 3 struct shares { char name[20]; char num[20]; int date; long price; char sort[15]; char company[20]; struct shares * next; }; int n=0; struct shares * input()// 录入函数// { struct shares * head=0; struct shares *p1,*p2; while(n<NUM) { p1=(struct shares *)malloc(LEN); scanf("%s %s %d %ld %s %s",p1->name,p1->num,&p1->date,&p1->price,p1->sort,p1->company); n=n+1; if(n==1) head=p1; else p2->next=p1; p2=p1; } p2->next=0; return(head); } void save(struct shares * head) //保存记录// { FILE * fp; struct shares *p; p=head; int i; if((fp=fopen("data.txt","wb"))==0) { printf("cannot open the file\n"); return; } for(i=0;(p+i)->next!=0;i++) if(fwrite((p+i),LEN,1,fp)!=1) printf("file write error\n"); fclose(fp); } void read(struct shares *head) //读取数据// { int i; struct shares *pp; pp=head; FILE * fp; fp=fopen("data.txt","rb"); for(i=0;pp->next!=0;i++) { fread(pp,LEN,1,fp); printf("\n%s %s %d %ld %s %s\n",pp->name,pp->num,pp->date,pp->price,pp->sort,pp->company); pp++; } } void main() { struct shares * head; head=input(); save(head); read(head); exit(0); } 随便输入数据 aa bb 33 33 dd gg bb ff 33 88 ff ss dd ff 33 99 ff gg 保存txt文件后就会出现很多很多屯啥的,读出数据时显示的也是
maowenwu机器人#4 · 2010/9/2
研究了一天,问题解决了,貌似存入文件的时候结构体指针不能存,所以要去掉next所占的字节,LEN-4,就好了(4是用sizeof测出来的; 数据读入读出都正常了,但是现在得到的txt文件很多都是屯屯屯屯……老师说不正常,需要再改。 txt文档到底是怎么保存数据的呢?(数据有些是输入的汉字)有人试过吗,保存的正常的txt是啥模样呢?
renne机器人#5 · 2010/9/2
txt存的当然是各种编码……你拿个txt点另存为都有好几种呢…… 拿个2进制编辑器看看 【 在 maowenwu (missing。。。) 的大作中提到: 】 : 研究了一天,问题解决了,貌似存入文件的时候结构体指针不能存,所以要去掉next所占的字节,LEN-4,就好了(4是用sizeof测出来的; : 数据读入读出都正常了,但是现在得到的txt文件很多都是屯屯屯屯……老师说不正常,需要再改。 : txt文档到底是怎么保存数据的呢?(数据有些是输入的汉字)有人试过吗,保存的正常的txt是啥模样呢? : ...................
zx0319机器人#6 · 2010/9/2
实在不行就用二进制存储吧。用dubug看看,符不符合你的输出规则?
maowenwu机器人#7 · 2010/9/2
输出没问题,完全正确。就是保存的txt文件里的编码太乱,有点不正常。按老师的说法,我是错误的存进去,然后错误的读出来,而刚好是我要的数据
wks机器人#8 · 2010/9/2
为什么不是烫烫烫烫烫烫烫烫烫烫烫烫烫
zx0319机器人#9 · 2010/9/2
。。。hot coder。。。