克洛泽老婆:c 帮帮忙

来源:百度文库 编辑:高考问答 时间:2024/05/08 05:31:31
如何才能多次输入数据而不覆盖(不需调用文件),现在这个程序每次退回主程序在输入数据时都会覆盖掉原数据,
#define M 1000

struct stu{
char num[9];
char name[8];
char sex[8];
char acemidy[8];
char type[8];
}stu[M];
create_list()
{ int i;
char cnum[9];
char cname[8];
char csex[8];
char cacemidy[8];
char ctype[8];
for(i=0;i<M;i++)
{ printf("please input 000 to exit.\n");
printf("please input number:");
scanf("%s",cnum);
if(cnum[0]=='0'&&cnum[1]=='0'&&cnum[2]=='0') break;
printf("please input name:");
scanf("%s",cname);
printf("please input sex:");
scanf("%s",csex);
printf("please input acemidy:");
scanf("%s",cacemidy);
printf("please input type:");
scanf("%s",ctype);
strcpy(stu[i].num,cnum);
strcpy(stu[i].name,cname);
strcpy(stu[i].sex,csex);
strcpy(stu[i].acemidy,cacemidy);
strcpy(stu[i].type,ctype);
}
getch();
}
void main()
{color();
for(;;)
{
char key;
printf(" #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#\n");
printf(" student card program\n");
printf(" #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#\n");
printf(" exit..........................................0\n");
printf(" input information.............................1\n");
printf(" search information............................2\n");
printf(" modify information............................3\n");
printf(" delete information............................4\n");
scanf("%s",&key);
switch(key){
case '0':
exit(0);
case '1':
create_list();
break;
case '2':
search_students();
break;
case '3':
modify_students();
break;
case '4':
delete_students();
break;
default:
printf("error!\n");
break;
}
}
getch();}

问题出在每次得新创建list时,都从0开始( for(i=0;i<M;i++){...} ),以前的就被覆盖掉了,解决问题的思路。
1、定义一全局变量,记录现在list中已经存储了多少条记录(int j)。
2、每次新增记录时从最后一条记录开始添加。
可以这样改代码(注:没有调试,应该没有问题)

#define M 1000

int j=0;//全局变量

struct stu{
char num[9];
char name[8];
char sex[8];
char acemidy[8];
char type[8];
}stu[M];
create_list()
{ int i;
char cnum[9];
char cname[8];
char csex[8];
char cacemidy[8];
char ctype[8];
for(i=j;i<M;i++) //从j条开始添加
{ printf("please input 000 to exit.\n");
printf("please input number:");
scanf("%s",cnum);
if(cnum[0]=='0'&&cnum[1]=='0'&&cnum[2]=='0') break;
printf("please input name:");
scanf("%s",cname);
printf("please input sex:");
scanf("%s",csex);
printf("please input acemidy:");
scanf("%s",cacemidy);
printf("please input type:");
scanf("%s",ctype);
strcpy(stu[i].num,cnum);
strcpy(stu[i].name,cname);
strcpy(stu[i].sex,csex);
strcpy(stu[i].acemidy,cacemidy);
strcpy(stu[i].type,ctype);
}

j=i;//把记录数保存在全局变量中。

getch();
}
void main()
{color();
for(;;)
{
char key;
printf(" #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#\n");
printf(" student card program\n");
printf(" #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#\n");
printf(" exit..........................................0\n");
printf(" input information.............................1\n");
printf(" search information............................2\n");
printf(" modify information............................3\n");
printf(" delete information............................4\n");
scanf("%s",&key);
switch(key){
case '0':
exit(0);
case '1':
create_list();
break;
case '2':
search_students();
break;
case '3':
modify_students();
break;
case '4':
delete_students();
break;
default:
printf("error!\n");
break;
}
}
getch();}