c语言设计实例报错,请高手更正!!!!
程序代码:#include"stdio.h"
#include"stdlib.h"
#define MAX 100
struct addr{
char name[30];
char street[40];
char city[20];
char state[3];
unsigned long int zip;
}add_list[MAX];
void init_list(void),enter(void);
void delete(void),list(void);
void load(void),save(void);
int menu_select(void),find_free(void);
int main(void)
{
char choice;
init_list();
for(;;)
{
choice=menu_select();
switch(choice)
{
case 1:enter();
break;
case 2:delete();
break;
case 3:list();
break;
case 4:save();
break;
case 5:load();
break;
case 6:exit(0);
}
}
return 0;
}
void init_list(void)
{
register int t;
for(t=0;t<MAX;++t)
add_list[t].name[0]='0';
}
int menu_select(void)
{
char s[80];
int c;
printf("1.Enter a name\n");
printf("2.Delete a name\n");
printf("3.List the file\n");
printf("4.Save the file\n");
printf("5.Load the file\n");
printf("6.Quit\n");
do{
printf("\nEnter you choice:");
gets(s);
c=atoi(s);
}while(c<0||c>6);
return c;
}
void enter(void)
{
int slot;
char s[80];
slot=find_free();
if(slot==-1)
{printf("\nList Full");
return;
}
printf("Enter name:");
gets(add_list[slot].name);
printf("Enter street:");
gets("add_list[slot].street");
printf("Enter city:");
gets(add_list[slot].city);
printf("Enter state:");
gets(add_list[slot].state);
printf("Enter zip:");
gets(s);
add_list[slot].zip=strtoul(s,'\0',10);
}
int find_free(void)
{
register int t;
for(t=0;add_list[t].name[0]&&t<MAX;++t)
if(t==MAX)
return -1;
return t;
}
void delete(void)
{
register int slot;
char s[80];
printf("enter record #:");
gets(s);
slot=atoi(s);
if(slot>=0&&slot<MAX)
add_list[slot].name[0]='\0';
}
void list(void)
{
register int t;
for(t=0;t<MAX;++t)
{
if(add_list[t].name[0])
{
printf("%s\n",add_list[t].name);
printf("%s\n",add_list[t].street);
printf("%s\n",add_list[t].city);
printf("%s\n",add_list[t].state);
printf("%s\n",add_list[t].zip);
}
}
printf("\n\n");
}
void save(void)
{
FILE *fp;
register int i;
if((fp=fopen("maillist","wb"))==NULL)
printf("cannot open file\n");
return;
for(i=0;i<MAX;i++)
if(*add_list[i].name)
if(fwrite(&add_list[i],sizeof(struct addr),1,fp)!=1)
printf("File write error\n");
fclose(fp);
}
void load(void)
{
FILE *fp;
register int i;
if((fp=fopen("maillist","rb"))==NULL)
{
printf("cannot open file\n");
return;
}
init_list();
for(i=0;i<MAX;i++)
if(fread(&add_list[i],sizeof(struct addr),1,fp)!=1)
{
if(feof(fp))
break;
printf("File read error\n");
}
fclose(fp);
}上述程序想建立一个通讯录,存放有姓名、电话号码、住址等,具备输入、查找、添加、修改及删除等功能。但是实现的时候老是报错,请各位高手指正,谢谢!!请把调试成功的发出来,谢谢!!!









