C++ :怎样将数据从txt文档中读取出来建立单链表,并输出???

先将建立的单链表的数据存储在txt文件当中,然后再从txt文件中提取出来,将提取出来的数据再建立单链表,并输出。程序代码如下:其中读取数据的函数不会写,求各位大神指教!!... 先将建立的单链表的数据存储在txt文件当中,然后再从txt文件中提取出来,将提取出来的数据再建立单链表,并输出。程序代码如下:其中读取数据的函数不会写,求各位大神指教!!
#include<iostream>
#include<fstream>
using namespace std;
typedef struct GoodsNode * pointer; //节点指针类型
struct GoodsNode
{
char name[20]; //商品名称
double number; //商品代码
char address[30]; //商品产地
int price; //商品单价
double stock; //该类商品库存量
pointer next;

};
typedef pointer goodslist; // 头指针类型
goodslist head;

goodslist initlist() //初始化,建立一个只有头节点的空表
{
pointer head;
head=new GoodsNode;
head->next=NULL;
return head;
}

void savefile() //将数据存储在文件当中
{
ofstream save("marketdata.txt",ios::out|ios::app);
if(!save)
{
cout<<"不能保存:marketdata.txt!! "<<endl;
system("pause");
exit(1);
}
pointer G;
G=head->next;
while(G!=NULL)
{
save<<G->name<<'\t'<<G->number<<'\t'<<G->address<<'\t'<<G->price<<'\t'<<G->stock<<endl;
G=G->next;
}
save.close();
}

goodslist increase() //录入商品
{
int num=0,m=0;
pointer rear,goods;
head=new GoodsNode;
rear=head;
cout<<"请输入待添加商品的种类数:";
cin>>num;
while(m<num)
{
goods=new GoodsNode;
cout<<"商品名称:"; cin>>goods->name;
cout<<"商品代码:"; cin>>goods->number;
cout<<"商品产地:"; cin>>goods->address;
cout<<"商品单价:"; cin>>goods->price;
cout<<"商品库存:"; cin>>goods->stock;
rear->next=goods;
rear=goods;
m++;
}
rear->next=NULL;
cout<<"录入完毕!"<<endl;

return head;
}

goodslist readfile() //读取文件中的数据
{
pointer head,rear,G;
head=new GoodsNode;
G=new GoodsNode;
rear=head;
ifstream read("marketdata.txt",ios::in|ios::beg);
if(!read)
{
cout<<"读取文件失败!!"<<endl;
system("pause");
exit(1);
}

while(read>>G->name>>G->number>>G->address>>G->price>>G->stock,read.good())
{
G=new GoodsNode;
rear->next=G;
rear=G;
read>>G->name>>G->number>>G->address>>G->price>>G->stock;
}
rear->next=NULL;
read.close();
return G;
}

void display() //输出全部商品信息
{

cout<<"名称\t"<<"代码\t"<<"产地\t"<<"单价\t"<<"库存量\t"<<endl;
pointer G;
G=head->next;
while(G!=NULL)
{
cout<<G->name<<'\t'<<G->number<<'\t'<<G->address<<'\t'<<G->price<<'\t'<<G->stock<<endl;
G=G->next;
}

cout<<endl<<endl;
}

void AdminMenu()
{
cout<<"1.录入商品信息\t"<<"2.修改商品信息\t"<<endl;
cout<<"3.删除商品信息\t"<<"4.查询商品信息\t"<<endl;
cout<<"5.排序\t"<<"6.查看所有商品\t"<<endl;
cout<<"请选择所需功能:";
}

int main()
{ initlist();
loop:
AdminMenu();
int i;
cin>>i;
switch(i)
{
case 1:
increase();
savefile();
goto loop;break;
case 2:
readfile();break;
case 6:
display();
goto loop;break;
}
return 0;
}
主要是readfile()这个函数不会写,上面的readfile()那个应该有问题,readfile在case 2:下,就是在“2.修改商品信息下”,大家测试看清了。
展开
 我来答
gongpea1206
2012-03-20 · TA获得超过269个赞
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:200万
展开全部
帮你修改了readfile()的后半部分:
while(read>>G->name>>G->number>>G->address>>G->price>>G->stock,read.good())
{
//G=new GoodsNode;
//rear->next=G;
//rear=G;
rear->next=G;
rear = rear->next;
//read>>G->name>>G->number>>G->address>>G->price>>G->stock;
G=new GoodsNode;
}
rear->next=NULL;
read.close();
//reaturn G;
return head;

head指向需要的链表 你的我注释掉了,没有删除
追问
不好意思,怎么我调试的时候,,编译时肯定没问题的啦,但是为什么运行的时候一旦调用那个readfile();函数就自动结束程序?根本用不了
追答
我这里应该已经调通你的readfile了呀。。你等等 我把整个函数给你 要是还不行我再看一下。
goodslist readfile() //读取文件中的数据
{
pointer head,rear,G;
head=new GoodsNode;
G=new GoodsNode;
rear=head;
ifstream read("marketdata.txt",ios::in|ios::beg);
if(!read)
{
cout>G->name>>G->number>>G->address>>G->price>>G->stock,read.good())
{
//G=new GoodsNode;
//rear->next=G;
//rear=G;
rear->next=G;
rear = rear->next;
//read>>G->name>>G->number>>G->address>>G->price>>G->stock;
G=new GoodsNode;
}
rear->next=NULL;
read.close();
//reaturn G;
return head;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式