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

求大神帮忙见见这段代码

2013-12-02 
求大神帮忙看看这段代码本帖最后由 u013011866 于 2013-12-01 14:59:40 编辑先运行一次程序,输入1执行crea

求大神帮忙看看这段代码
本帖最后由 u013011866 于 2013-12-01 14:59:40 编辑 先运行一次程序,输入1执行creat(),save(),,再输入0退出;
这样刚刚输入的数据就应该保存到phonebook里了,
再次打开程序,直接输入2,执行put()输出,却提示错误。
这是为什么?求大神帮忙



#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define N sizeof(struct person)

struct person
{
int num;//联系人序号
char name[20];//联系人名字
int phone;//联系人电话
struct person *next;
};

void menu();//主菜单
void put(struct person *head);//输出联系人
void save(struct person *head);//存储联系人
void add(struct person *head);//添加联系人
struct person *creat(int nn);

int i,j;

void main()
{
int aa;


while(1)
{
printf("输入\n");
scanf("%d",&aa);
fflush(stdin);
switch(aa)
{
case 1:head=creat(1);
save(head);break;

case 2:put(head);break;

case 3:add(head);
break;
case 0: exit(0);
}
}

}


struct person *creat(int nn)
{
int n=0;
int no;//记录联系人序号
no=nn;
struct person *head,*p1,*p2;
p1=p2=(struct person *)malloc(N);
p1->num=no;
printf("输入联系人姓名:");
gets(p1->name);
printf("输入联系人5位号码:");
scanf("%d",&p1->phone);
head=NULL;
while(p1->phone!=0)
{
n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct person *)malloc(N);
fflush(stdin);
printf("输入联系人姓名:");
gets(p1->name);
no++;
p1->num=no;
printf("输入联系人5位号码:");
scanf("%d",&p1->phone);

}
p2->next=NULL;

return head;


}


void save(struct person *head)
{
FILE *fp;
if((fp=fopen("PhoneBook.dat","wb"))==NULL)
{
printf("打开错误");
return;
}
struct person *p;
p=head;
if(head!=NULL)
do
{
if(fwrite(p,sizeof(struct person),1,fp)!=1)
{printf("写入错误");}
p=p->next;
}while(p!=NULL);
fclose(fp);
}


void put(struct person *head)
{
FILE *fp;
struct person *p;
if((fp=fopen("PhoneBook.dat","rb"))==NULL)
{
printf("打开错误");
return;
}
p=head;
while(fread(p,sizeof(struct person),1,fp))
{
printf("%d\t%s\t%d\t\n",p->num,p->name,p->phone);
p++;
}
fclose(fp);
}

[解决办法]

void main()
{
    int aa;
 
     
    while(1)
    {
        printf("输入\n");
        scanf("%d",&aa);
        fflush(stdin);
        switch(aa)
        {
        case 1:    head=creat(1);
                save(head);break;
 
        case 2:    put(head);break;//这个head定义在哪里????
 
        case 3:    add(head);
                break;
        case 0: exit(0);
        }
    }
     
}

热点排行
Bad Request.