这部分代码有什么问题,(急急急),求大神们帮帮忙吧!

void gx()

{    

FILE *p; 

struct st s[N]; 

void gx()
{    
FILE *p;	
struct st s[N];	
int i=0,c,flag;	p=fopen("staff.dat","rb");    if(p==NULL) 	
{		
printf("文件不存在!\n");		exit(-1);	
}	
while(fread(&s[i],sizeof(struct st),1,p)==1)	
{		
i++;	
}	
fclose(p);over:	system("cls");	
printf("请选择功能:\n");	printf("**----------------按1:追加员工信息-----------------**\n");	
printf("**----------------按2:删除员工信息-----------------**\n");	
printf("**----------------按3:修改员工信息-----------------**\n");
printf("**-----------------按0:返回主菜单------------------**\n");	fflush(stdout);rewind(stdin);	scanf("%d",&c);	switch(c)	
{		case 1:	
        flag=0;			printf("请输入追加员工人数:");			int zj,n;			scanf("%d",&zj);			getchar();			
for(i=n; i<n+zj; i++)			{				
printf("请输入第%d人的信息:\n",i-n+1);				printf("请输入工号:\n");				scanf("%s",s[i].num);				printf("请输入姓名:\n");				scanf("%s",s[i].name);				printf("请输入年龄:\n");				scanf("%s",s[i].age);				//getchar();				printf("请输入职位:\n");				scanf("%s",s[i].work);				printf("请输入性别:\n");				scanf("%s",s[i].sex);				printf("请输入地址:\n");				scanf("%s",s[i].add);				printf("请输入电话:\n");				scanf("%s",s[i].phone);				printf("请输入入职时间(年月日):");		        scanf("%s%s%s",s[i].hiredate.year,s[i].hiredate.month,s[i].hiredate.day);			
}			
n=n+zj;			
printf("追加成功 按回车继续······");			getchar();			
break;		
case 2:			flag=0;			printf("请输入删除员工人数:");			int sc,j,k;			scanf("%d",&sc);			getchar();			char gh[13];			for(i=0; i<sc; i++)			{				printf("请输入删除的员工工号:");				scanf("%d",&gh);				for(j=0; j<n; j++)				{					if(strcmp(gh,s[j].num)==0)					{						if(j==n-1)						{							flag=1;							n=n-1;						}						else						{							flag=1;							for(k=j; k<n; k++)							{								s[k]=s[k+1];							}							n=n-1;						}					}				}			}			if(flag==0)			{				printf("查无此人 请重新选择!\n按回车继续······");				getchar();				getchar();				goto over;			}			printf("删除成功 按回车继续······");			getchar();			break;		case 3:			flag=0;			printf("请输入要修改员工的工号:");			char gh1[13];			getchar();			scanf("%s",&gh1);			for(i=0; i<n; i++)			{				if(strcmp(gh1,s[i].num)==0)				{					printf("请输入工号:\n");					scanf("%s",s[i].num);					printf("请输入姓名:\n");					scanf("%s",s[i].name);					printf("请输入年龄:\n");					scanf("%s",s[i].age);					getchar();					printf("请输入职位:\n");					scanf("%s",s[i].work);					printf("请输入性别:\n");					scanf("%s",s[i].sex);					printf("请输入地址:\n");					scanf("%s",s[i].add);					printf("请输入电话:\n");					scanf("%s",s[i].phone);					printf("请输入入职时间(年月日):");		            scanf("%s%s%s",s[i].hiredate.year,s[i].hiredate.month,s[i].hiredate.day);					flag=1;				
}			
}			
if(flag==0)			
{				
printf("查无此人 请重新选择!\n按回车继续······");				getchar();			
}			
break;		
case 0:			
FILE *fp;			
printf("正在保存至staff.dat");			if((fp=fopen("staff.dat", "wb"))==NULL)			
{				
printf("文件无法打开...\n");			}			
fwrite(s, sizeof(struct st),n,p);			fclose(fp);			
printf("数据成功写入文件...\n");			printf("请按回车键继续······");			getchar();		
default:			
printf("输入出错 请重新输入!!\n按回车继续······");
	}	
goto over;	
system("pause");
}

int i=0,c,flag; p=fopen("staff.dat","rb"); if(p==NULL)  

{  

printf("文件不存在!\n"); exit(-1); 

while(fread(&s[i],sizeof(struct st),1,p)==1) 

{  

i++; 

fclose(p);over: system("cls"); 

printf("请选择功能:\n");

printf("**----------------按1:追加员工信息-----------------**\n"); 

printf("**----------------按2:删除员工信息-----------------**\n"); 

printf("**----------------按3:修改员工信息-----------------**\n");

printf("**-----------------按0:返回主菜单------------------**\n"); fflush(stdout);rewind(stdin); scanf("%d",&c); switch(c) 

{ case 1: 

        flag=0; printf("请输入追加员工人数:"); int zj,n; scanf("%d",&zj); getchar();   

for(i=n; i<n+zj; i++) {    

printf("请输入第%d人的信息:\n",i-n+1); printf("请输入工号:\n"); scanf("%s",s[i].num); printf("请输入姓名:\n"); scanf("%s",s[i].name); printf("请输入年龄:\n"); scanf("%s",s[i].age); //getchar(); printf("请输入职位:\n"); scanf("%s",s[i].work); printf("请输入性别:\n"); scanf("%s",s[i].sex); printf("请输入地址:\n"); scanf("%s",s[i].add); printf("请输入电话:\n"); scanf("%s",s[i].phone); printf("请输入入职时间(年月日):"); scanf("%s%s%s",s[i].hiredate.year,s[i].hiredate.month,s[i].hiredate.day);   

}   

n=n+zj;   

printf("追加成功 按回车继续······"); getchar();   

break;  

case 2: flag=0; printf("请输入删除员工人数:"); int sc,j,k; scanf("%d",&sc); getchar(); char gh[13]; for(i=0; i<sc; i++) { printf("请输入删除的员工工号:"); scanf("%d",&gh); for(j=0; j<n; j++) { if(strcmp(gh,s[j].num)==0) { if(j==n-1) { flag=1; n=n-1; } else { flag=1; for(k=j; k<n; k++) { s[k]=s[k+1]; } n=n-1; } } } } if(flag==0) { printf("查无此人 请重新选择!\n按回车继续······"); getchar(); getchar(); goto over; } printf("删除成功 按回车继续······"); getchar(); break; case 3: flag=0; printf("请输入要修改员工的工号:"); char gh1[13]; getchar(); scanf("%s",&gh1); for(i=0; i<n; i++) { if(strcmp(gh1,s[i].num)==0) { printf("请输入工号:\n"); scanf("%s",s[i].num); printf("请输入姓名:\n"); scanf("%s",s[i].name); printf("请输入年龄:\n"); scanf("%s",s[i].age); getchar(); printf("请输入职位:\n"); scanf("%s",s[i].work); printf("请输入性别:\n"); scanf("%s",s[i].sex); printf("请输入地址:\n"); scanf("%s",s[i].add); printf("请输入电话:\n"); scanf("%s",s[i].phone); printf("请输入入职时间(年月日):"); scanf("%s%s%s",s[i].hiredate.year,s[i].hiredate.month,s[i].hiredate.day); flag=1;    

}   

}   

if(flag==0)   

{    

printf("查无此人 请重新选择!\n按回车继续······"); getchar();   

}   

break;  

case 0:   

FILE *fp;   

printf("正在保存至staff.dat"); if((fp=fopen("staff.dat", "wb"))==NULL)   

{    

printf("文件无法打开...\n"); }   

fwrite(s, sizeof(struct st),n,p); fclose(fp);   

printf("数据成功写入文件...\n"); printf("请按回车键继续······"); getchar();  

default:   

printf("输入出错 请重新输入!!\n按回车继续······");

 } 

goto over; 

system("pause");

}

 

修改如下,供参考:

void gx()
{
    FILE *p;
    struct st s[N];
    int i=0,c,flag,n;
    p=fopen("staff.dat","rb");
    if(p==NULL)
    {
        printf("文件不存在!\n");
        exit(-1);
    }
    while(fread(&s[i],sizeof(struct st),1,p)==1)
    {
       i++;
    }
    fclose(p);
    n=i;   //这里将文件里读入的记录条数赋值给 n

    over:system("cls");

    printf("请选择功能:\n");
    printf("**----------------按1:追加员工信息-----------------**\n");
    printf("**----------------按2:删除员工信息-----------------**\n");
    printf("**----------------按3:修改员工信息-----------------**\n");
    printf("**-----------------按0:返回主菜单------------------**\n");
    fflush(stdout);rewind(stdin);
    scanf("%d",&c);
    switch(c)
    {
          case 1:
                 flag=0;
                 printf("请输入追加员工人数:");
                 int zj;
                 scanf("%d",&zj);
                 getchar();
                 for(i=n; i<n+zj; i++){

                      printf("请输入第%d人的信息:\n",i-n+1);
                      printf("请输入工号:\n");
                      fflush(stdout);rewind(stdin);
                      scanf("%s",s[i].num);
                      printf("请输入姓名:\n");
                      fflush(stdout);rewind(stdin);
                      scanf("%s",s[i].name);
                      printf("请输入年龄:\n");
                      fflush(stdout);rewind(stdin);
                      scanf("%s",s[i].age);
                      //getchar();
                      printf("请输入职位:\n");
                      fflush(stdout);rewind(stdin);
                      scanf("%s",s[i].work);
                      printf("请输入性别:\n");
                      fflush(stdout);rewind(stdin);
                      scanf("%s",s[i].sex);
                      printf("请输入地址:\n");
                      fflush(stdout);rewind(stdin);
                      scanf("%s",s[i].add);
                      printf("请输入电话:\n");
                      fflush(stdout);rewind(stdin);
                      scanf("%s",s[i].phone);
                      printf("请输入入职时间(年月日):");
                      fflush(stdout);rewind(stdin);
                      scanf("%s%s%s",s[i].hiredate.year,s[i].hiredate.month,s[i].hiredate.day);
                 }
                 n=n+zj;
                 printf("追加成功 按回车继续······");
                 getchar();
                 break;
          case 2:
                 int sc,j,k;
                 char gh[13];
                 printf("请输入删除员工人数:");
                 fflush(stdout);rewind(stdin);
                 scanf("%d",&sc);
		 for(i=0; i<sc; i++){
                      flag=0;
                      printf("请输入第%d个删除的员工工号:",i+1);
                      fflush(stdout);rewind(stdin);
                      scanf("%s",gh);                   //scanf("%d",&gh);
                      for(j=0; j<n; j++){
                          if(strcmp(gh,s[j].num)==0){
                              if(j==n-1) {
                                    flag=1;
                                    n=n-1;
                              }else{
                                    flag=1;
                                    for(k=j; k<n-1; k++){
					  s[k]=s[k+1];
                                    }
                                    n=n-1;
                              }
                          }
                      }
                      if(flag==0){
                           printf("查无此人 请选择下一个!\n按回车继续······");
                           getchar();
                      }
                 }
                 printf("删除成功 按回车继续······");
                 getchar();
                 break;
          case 3:
                 flag=0;
                 char gh1[13];
                 printf("请输入要修改员工的工号:");
                 fflush(stdout);rewind(stdin);
                 scanf("%s",gh1);   //scanf("%s",&gh1);
                 for(i=0; i<n; i++) {
                      if(strcmp(gh1,s[i].num)==0){
                           flag=1;
                           printf("请输入工号:\n");
                           fflush(stdout);rewind(stdin);
                           scanf("%s",s[i].num);
                           printf("请输入姓名:\n");
                           fflush(stdout);rewind(stdin);
                           scanf("%s",s[i].name);
                           printf("请输入年龄:\n");
                           fflush(stdout);rewind(stdin);
                           scanf("%s",s[i].age);
                           printf("请输入职位:\n");
                           fflush(stdout);rewind(stdin);
                           scanf("%s",s[i].work);
                      }
                 }
                 if(flag==0){
                      printf("查无此人 请重新选择!\n按回车继续······");
                      getchar();
                 }
                 break;
          case 0:
                 FILE *fp;
                 printf("正在保存至staff.dat");
                 if((fp=fopen("staff.dat", "wb"))==NULL){
                       printf("文件无法打开...\n");
                 }
                 fwrite(s, sizeof(struct st),n,p);
                 fclose(fp);
                 printf("数据成功写入文件...\n");
                 printf("请按回车键继续······");
                 getchar();
                 break;
         default:
                 printf("输入出错 请重新输入!!\n按回车继续······");
                 break;
    }
    //goto over;
    //system("pause");
}