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

编译是没有关问题,可是在写数据到链表时就出现有关问题了,小弟我找不到有关问题在哪,大家帮个忙,多谢

2013-02-24 
编译是没问题,可是在写数据到链表时就出现问题了,我找不到问题在哪,大家帮个忙,谢谢!#include stdio.h#i

编译是没问题,可是在写数据到链表时就出现问题了,我找不到问题在哪,大家帮个忙,谢谢!
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

struct student
{
char name[10];
unsigned long  mbp_home;
unsigned long  mbp_college;
unsigned long  tel;
char ad[10];
struct student *next;
};

typedef struct student ST;

//-----------------------------------------------------
void welcome(void)
{
printf("\n\n\n\n");
printf("\t\t******************欢*迎*使*用*******************\n");
printf("\t\t*                                              *\n");
printf("\t\t*                                              *\n");
printf("\t\t*                五班通讯录                    *\n");
printf("\t\t*                                              *\n");
printf("\t\t*                                              *\n");
printf("\t\t*               Alpha    1.0                   *\n");
printf("\t\t*                                              *\n");
printf("\t\t*                                              *\n");
printf("\t\t*              制作人: Hugh                   *\n");
printf("\t\t*                                              *\n");
printf("\t\t*                                              *\n");
printf("\t\t*                                              *\n");


printf("\t\t************************************************\n");
system("pause");
system("cls");
}
//------------------------------------------------------
void menu(void)
{
printf("\n\n\n\n");
printf("\t\t************************************************\n");
printf("\t\t*                                              *\n");
printf("\t\t*    1.列出所有成员及电话                      *\n");
printf("\t\t*                                              *\n");
printf("\t\t*    2.根据姓名搜索信息                        *\n");
printf("\t\t*                                              *\n");
printf("\t\t*    3.添加信息                                *\n");
printf("\t\t*                                              *\n");
printf("\t\t*    4.更改信息                                *\n");
printf("\t\t*                                              *\n");
printf("\t\t*                                              *\n");
printf("\t\t*    0.退出                                    *\n");
printf("\t\t*                                              *\n");
printf("\t\t************************************************\n");
}
//----------------------------------
void end(void)
{
printf("\n\n\n\n");
printf("\t\t************************************************\n");
printf("\t\t*                                              *\n");


printf("\t\t*                                              *\n");
printf("\t\t*                五班通讯录                    *\n");
printf("\t\t*                                              *\n");
printf("\t\t*                                              *\n");
printf("\t\t*               Alpha    1.0                   *\n");
printf("\t\t*                                              *\n");
printf("\t\t*                                              *\n");
printf("\t\t*              制作人: Hugh                   *\n");
printf("\t\t*                                              *\n");
printf("\t\t*                                              *\n");
printf("\t\t*                                              *\n");
printf("\t\t************************************************\n");
printf("按任意键退出!");
getch();
}
//-----------------------------------
void list(FILE* l)
{

}
//-----------------------------------
ST* add(ST* head)
{
char r;
ST* p=NULL,* pr=head;
do 
{
p=(ST*)malloc(sizeof(ST));
if (p=NULL)
{
printf("你的电脑太糟糕了,居然没有内存了!\n\n按任意键关闭程序!\n\n");
getch();
exit(0);
}

if(head==NULL)
{
head=p;
}
else
{
while(pr->next!=NULL)
{
pr=pr->next;
}
pr->next=p;
}
pr=p;

printf("(以下信息没有的填“0”)\n\n");
printf("请输入姓名:");              


scanf(" %s",&pr->name);           //运行到这儿就出问题了,求解释
printf("请输入假期手机号:");
scanf(" %d",&pr->mbp_home);
printf("请输入学校用手机号:");
scanf(" %d",&pr->mbp_college);
printf("请输入固定电话:");
scanf(" %d",&pr->tel);
printf("请输入学校所在地:");
scanf(" %s",&pr->ad);
pr->next=NULL;

printf("需要再添加吗?(Y/N): ");
scanf(" %c",&r);
} while (r=='y'||r=='Y');



system("cls");

return head;
}
//--------------------------------------
void save(FILE* fp,ST* head)
{
ST* p=head;
while (p!=NULL)
{
fwrite(p,sizeof(ST),1,fp);
}
printf("存储完毕!\n\n按任意键继续!");
getch();
system("cls");
}
//-------------------------------------
main()
{
char c;
FILE *fp;
ST *head=NULL;

welcome();

fp=fopen(".\\information.txt","r+");
if(fp==NULL)
{
printf("文件已不存在,请重新下载源文件或确保文件在根目录下并以information.txt命名。\n\n\n下载地址:\n\n五班公邮:\t\n\n密码:\t\t\n\n\n\n");
getch();
return 0;
}


do 
{
int i=0;

do 
{
menu();
if(i==0)
{
printf("输入你的选择:");
}
else
{
printf("输入错误,请重新输入:");
}
i=1;

scanf(" %c",&c);
system("cls");

} while (!(c>='0'&&c<='4'));


switch(c)
{
case '0':
end();
fclose(fp);
free(head);
return 0;

case '1':
list(fp);
break;
case '2':
break;
case '3':
head=add(head);
fp=freopen(".\\information.txt","w+",fp);
save(fp,head);
break;
case '4':
break;


}

} while (1);

}
咋眼一看,这地方错咯~~

热点排行