首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

帮忙写个保存和载入函数,真心不会,分送下。

2012-09-16 
帮忙写个保存和载入函数,真心不会,分送上。。。如下:针对下面的创建函数和保存函数,请帮忙写个保存和载入函数

帮忙写个保存和载入函数,真心不会,分送上。。。
如下:针对下面的创建函数和保存函数,请帮忙写个保存和载入函数,我自己写的都把电脑搞死机了。。。真心不会
能用的话马上给分

//创建和增加链表信息
  void add(POOL_BASIC** head)
{
POOL_BASIC *hp=*head, *p;
SEED_BASIC *pp;
IN_BASIC *ppp;
char ch;
do
{
  printf("确实要录入信息?(y/n)\n");
  getchar();
  ch=getchar();
}while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y');
  if(ch=='n'||ch=='N')
  return;
lop:printf("(1)请输入鱼塘基本信息:\n");
  p=(POOL_BASIC *)malloc(sizeof(POOL_BASIC));
printf(" 塘号:");
scanf("%s",p->pool_name);
printf("水面积:");
scanf("%f",&p->size);
getchar();
p->snext=NULL;
p->next=hp;
hp=p;

  *head=hp;

while (p!=NULL)
 {
printf("(2)请输入%s的苗种基本信息:",p->pool_name);
printf("\n");
looop:pp=(SEED_BASIC*)malloc(sizeof(SEED_BASIC));

printf(" 苗种编号:");
scanf("%s",pp->seed_num);
printf(" 苗种名称:");
scanf("%s",pp->seed_name);
printf(" 规格:");
scanf("%s",pp->spe);
getchar();
strcpy(pp->pool_name, p->pool_name);
pp->next=p->snext;
p->snext=pp;
pp->inext=NULL;
while(pp!=NULL)
  {
  loop:printf("(3)请输入%s的投苗基本信息:",pp->seed_name);
  ppp=(IN_BASIC*)malloc(sizeof(IN_BASIC));
  printf("\n");
printf(" 投养时间:");
scanf("%s", ppp->time);
printf(" 投养数量:");
scanf("%d",&ppp->num);
printf(" 单价:");
scanf("%f",&ppp->price);
ppp->resource=(char *)malloc(sizeof(char)*20);
printf(" 苗种来源:");
scanf("%s",ppp->resource);
printf(" 供货单号:");
scanf("%s",ppp->list_num);
getchar();
strcpy(ppp->pool_name,pp->pool_name);
strcpy(ppp->seed_num, pp->seed_num);
ppp->next=pp->inext;
pp->inext=ppp;
  printf("(3)是否继续输入%s的投苗基本信息?(y/n):",pp->seed_name);
ch=getchar();
getchar();
  while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y')
  {
printf("(3)是否继续输入%s的投苗基本信息?(y/n):",pp->seed_name);
ch=getchar();
getchar();
}
  if(ch=='Y'||ch=='y')
  goto loop;
  else
printf("(2)是否继续输入%s的苗种基本信息?(y/n):",p->pool_name);
ch=getchar();
getchar();
while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y')
  {
printf("(2)是否继续输入%s的苗种基本信息?(y/n):",p->pool_name);
ch=getchar();
getchar();
  }
  if(ch=='Y'||ch=='y')
  goto looop;
  else if(ch=='N'||ch=='n')
  break;
}
printf("(1)是否继续输入鱼塘基本信息?(y/n):");
ch=getchar();
getchar();
while(ch!='y'&&ch!='Y'&&ch!='n'&&ch!='N')
  {
  printf("(1)是否继续输入鱼塘基本信息?(y/n):");
  ch=getchar();
  getchar();
  }
  if(ch=='y'||ch=='Y')
  goto lop;
  else break;
 }
 *head=p;
}



//遍历函数
void traverse(POOL_BASIC *head)
{
POOL_BASIC *p=head;
SEED_BASIC *pp;
IN_BASIC *ppp;
int i=1;
  if(head==NULL)
  {
  printf("链表中没有信息!");


  getchar();
  return;
  }
for(;p!=NULL;p=p->next,i++)
{
printf("(%d)\n",i);
printf("-------------------------------------------\n");
printf("鱼塘基本信息:\n");
printf("塘号:%s",p->pool_name);
printf(" ");
printf("水面积:%.2f",p->size);
printf("\n");
pp=p->snext;
while(pp!=NULL)
{
printf("**************************************");
printf("\n");
printf("苗种基本信息:\n");
printf("苗种编号:%s", pp->seed_num);
printf(" ");
printf("苗种名称:%s",pp->seed_name);
printf(" ");
printf("规格:%s",pp->spe);
printf("\n");
printf("**************************************\n");
ppp=pp->inext;
while(ppp!=NULL)
  {
  printf("##########################################################\n");
  printf("投苗基本信息:\n");
printf("投养时间:%-11s",ppp->time);
printf(" ");
printf("投养数量:%d",ppp->num);
printf(" ");
printf("单价:%.2f",ppp->price);
printf("\n");
printf("苗种来源:%-11s",ppp->resource);
printf(" ");
printf("供货单号:%s",ppp->list_num);
printf("\n");
printf("##########################################################\n");
ppp=ppp->next;
  }

pp=pp->next;
}
printf("-------------------------------------------\n");
}
getchar();
}

[解决办法]
链表的,给你个参考,自己改吧
http://blog.csdn.net/bdmh/article/details/6112631
[解决办法]
lz应该自己尝试断点调试,插桩调试,相信问题不难解决。
[解决办法]
指针,要把指向的内容保存了,而不是存指针地址。
[解决办法]
问题似乎是字符串越界,这里的长度20*char只能存放9个汉字,检查你的“苗种来源”记录,按照该字段最大汉字数*2+1的长度来malloc

热点排行