c 帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/30 04:24:27
如何才能多次输入数据而不覆盖(不需调用文件),现在这个程序每次退回主程序在输入数据时都会覆盖掉原数据,
#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);

问题出在每次得新创建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",