user-0 提问: C语言实训求解 一个修改函数没错运行有问题

回复:
user: user-0
content: 这个难道不能在帖子下回复嘛 忘记去看惹  来晚了就是这个错误我真是太傻了 已经改好交作业了 谢谢ni

user: user-1
content: 你这scanf是个什么用法.  	printf("请重新输入该员工信息"); 	printf("工号："); 	scanf("%s,st[changeIndex].num"); 	printf("姓名："); 	scanf("%s,st[changeIndex].name"); 	printf("工龄："); 	scanf("%d,st[changeIndex].gl"); 	printf("基本工资："); 	scanf("%d,st[changeIndex].jbgz"); 	printf("奖金："); 	scanf("%d,st[changeIndex].jj"); 	printf("应发工资："); 	scanf("%d,st[changeIndex].yfgz"); 	printf("五险一金："); 	scanf("%d,st[changeIndex].wxyj"); 	printf("实发工资："); 	scanf("%d,st[changeIndex].yfgz");

user: user-0
content: 拜托拜托大家

user: user-0
content: #include<stdio.h> #include<stdlib.h>//包含常用系统函数 #include<string.h>//常用的头文件 struct employee { char num[30];//工号 char name[30];//姓名 int gl;//工龄 int jbgz;//基本工资 int glgz;//工龄工资 int jj;//奖金 int yfgz;//应发工资 int wxyj;//五险一金 int sfgz;//实发工资 }; int read_file(struct employee st[]); void menu(); int write_file(struct employee st[]); void select();//查看员工信息 void num_modify();//修改员工信息 void fh();//返回主菜单 void save(); struct employee st[30]; int Number=0;//记录总的员工人数 int main() { 	int choose=0;     FILE *fp=NULL; 	char yesorno; 	if((fp=fopen("manage.txt","rb+"))==NULL) 	{ 		printf("\n=======>提示：文件不存在，是否要创建一个(y/n)\n"); 		scanf("%c",&yesorno); 		if(yesorno=='y'||yesorno=='Y') 		{ 			fp=fopen("manage.txt","wb+"); 			fclose(fp);//关闭fp所指的文件，释放文件缓冲区 		} 		else 			exit(0); 	} 	else 	{ 		Number=read_file(st);//要是文件已经有数据 将数据初始化到数组中 } 	system("cls"); 	while(true) 	{ 		menu(); 		printf("\t\t=======>请选择："); 		scanf("%d",&choose); 		system("cls"); 		switch(choose) 		{ 			case 0: 			exit(0);//退出系统 			break; 			case 1:             select();//查看员工信息 			fh(); 			break; 			case 2: 			num_modify();//修改员工信息 			fh(); 			break; 			case 3: 			;// 			fh(); 			break; 			case 4: 			;// 			fh(); 			break; 			case 5: 			;// 			fh(); 			break; 			case 6: 			;// 			fh(); 			break; 			case 7: 			;// 			fh(); 			break; 			case 8: 			save();// 			fh(); 			break; 			default: 			break; 		} 		fflush(stdin); 		getchar(); 		system("cls"); 	} }  void select() { 	printf("%d",Number);     printf("以下是全部员工信息:\n");     printf("工号\t姓名\t工龄\t基本工资\t工龄工资\t奖金\t应发工资\t五险一金\t实发工资\n");     for(int i=0;i<Number;i++)      printf("%s\t%s\t%d\t%d\t\t%d\t\t%d\t%d\t\t%d\t\t%d\n",st[i].num,st[i].name,st[i].gl,st[i].jbgz, 	    	st[i].glgz,st[i].jj,st[i].yfgz,st[i].wxyj,st[i].sfgz);  }  void fh() { 	printf("\t=================>按Enter返回主菜单\n"); } void save() { 	printf("\t=================程序在运行时已自动保存\n"); }  void num_modify()//修改员工信息 { FILE *fp=NULL; char xh[100];     int i=0; 	int changeIndex;//changeIndex改变标记 	int index=0; 	printf("请输入要修改的职工编号："); 	scanf("%s",xh); 	   for(i=0;i<Number;i++) 	   { 		   if(strcmp(xh,st[i].num)==0)//比较输入工号和数组中已有工号 		   { 			   changeIndex=i;//保存要修改的人的下标 			   break; 		   } 	   } 	   printf("工号\t姓名\t工龄\t基本工资\t基本工资\t奖金\t应发工资\t五险一金\t实发工资\n"); 	   printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",st[changeIndex].num,st[changeIndex].name, 		   st[changeIndex].gl,st[changeIndex].jbgz,st[changeIndex].glgz,st[changeIndex].jj, 		   st[changeIndex].yfgz,st[changeIndex].wxyj,st[changeIndex].sfgz); 	   printf("请重新输入该员工信息");     	printf("工号："); 		scanf("%s,st[changeIndex].num");     	printf("姓名："); 		scanf("%s,st[changeIndex].name");     	printf("工龄："); 		scanf("%d,st[changeIndex].gl");     	printf("基本工资："); 		scanf("%d,st[changeIndex].jbgz");     	printf("奖金："); 		scanf("%d,st[changeIndex].jj");     	printf("应发工资："); 		scanf("%d,st[changeIndex].yfgz");     	printf("五险一金："); 		scanf("%d,st[changeIndex].wxyj");     	printf("实发工资："); 		scanf("%d,st[changeIndex].yfgz");         //信息修改后重新更新文件里面的数据以保持数据一致性 		fp=fopen("manage.txt","wb+"); 		for(i=0;i<Number;i++) 		{ 			fwrite(&st[i],sizeof(struct employee),1,fp); 			//把ptr所指向n*size个字节输入到fp所指向的文件中 		} 		fclose(fp); 		printf("\t=================>修改成功\n"); }  int read_file(struct employee st[]) {     FILE *fp=NULL; 	int i=0; 	 if ((fp=fopen("manage.txt","rb+")) == NULL) 	 { 		printf("文件打开错误"); } 	while(1) { 		if (fscanf(fp, "\t%s\t%s\t%d\t%d\t\t%d\t\t%d\t%d\t\t%d\t\t%d\n",st[i].num,st[i].name,&st[i].gl,&st[i].jbgz,   	    	&st[i].glgz,&st[i].jj,&st[i].yfgz,&st[i].wxyj,&st[i].sfgz)== EOF) 		{ 			break; 		} 		i++; 	} 	fclose(fp); 	return i; }  void menu()//菜单 { printf("\t***************************************\n"); printf("\t*                                     *\n"); printf("\t*      欢迎进入职工工资管理系统       *\n"); printf("\t*           1.查看员工信息            *\n"); printf("\t*           2.修改员工信息            *\n"); printf("\t*           3.查找员工信息            *\n"); printf("\t*           4.删除员工信息            *\n"); printf("\t*           5.增加员工信息            *\n"); printf("\t*           6.员工总工资进行排序      *\n"); printf("\t*           7.查看所有员工信息        *\n"); printf("\t*           8.文件保存到硬盘上        *\n"); printf("\t*           9.员工按奖金进行排序      *\n"); printf("\t*           10.工龄超过10年的人       *\n"); printf("\t*           11.工龄不足3年的人        *\n"); printf("\t*           0.退出程序                *\n"); printf("\t*                                     *\n"); printf("\t***************************************\n"); }