user-0 提问: 各位大佬帮忙看一下代码哪里出现了问题

回复:
user: user-1
content: //5预览成绩信息 void yl(int n) { 	struct score stu[200]; 	int i; 	printf("成绩信息如下：\n"); 	FILE *fp; 	fp=fopen("111.txt","r"); 	if(fp==NULL) 	{              printf("打开文件失败,请重试！\n\n");              fclose(fp);              exit(0); 	} 	printf("学号\t\t   姓名\t\t    班级\t高数\t外语\t物理\t程序\t思修\t中传\n"); 	int c = 0; 	while(!feof(fp)) 	{             fscanf(fp,"%s %s %s %d %d %d %d %d %d\n",                 stu[c].ID,stu[c].Name,stu[c].banji,&stu[c].gs,&stu[c].wy,&stu[c].wl,&stu[c].cx,&stu[c].sx,&stu[c].zz);             c++; 	} 	if(n!=0){//人数不为0 		for(i=0;i<c;i++) 		{                      printf("%-18s%-18s%-10s\t%d\t%d\t%d\t%d\t%d\t%d\n",                        stu[i].ID,stu[i].Name,stu[i].banji,stu[i].gs,stu[i].wy,stu[i].wl,stu[i].cx,stu[i].sx,stu[i].zz); 		} 	} 	fclose(fp);         fp =NULL; 	printf("显示完毕 ,请按任意键返回\n\n"); 	return; }

user: user-1
content: 修改如下，供参考：#include <stdio.h> #include <string.h> #include <stdlib.h> //成绩结构体 struct score { 	char ID[11]; 	char Name[25]; 	char banji[10]; 	int gs; 	int wy; 	int wl; 	int cx; 	int sx; 	int zz;  };  //函数声明 	void welcome();//主菜单 	void yl(int); //成绩预览 	void cx(int); //成绩查询 	void zj(int); //增加成绩 	int  sc(int); //删除成绩 	int  xg(int);//修改成绩 	void bccj(void);//保存成绩并退出 	void showcxmenu(void);//二级菜单，查询菜单 	void xmcx(int n);//姓名查询 	void xhcx(int);//学号查询  //main函数 int main(int argc, char* argv[]) { 	int flag,n=0,count=0;   //flag标志位,count计数,当前总人数 	//-------------判断文件里面有多少条记录--------------------// 	FILE *fp; 	fp=fopen("111.txt","a+"); 	if(fp==NULL) 	{             printf("打开文件失败,请重试！\n");             fclose(fp);             exit(0); 	}  	while(!feof(fp)) 	{              char cc = fgetc(fp);              if(cc == '\n') count++;//一行一条记录 	} 	fclose(fp);         fp = NULL;          	//---------------------------------// 	do 	{ 		welcome(); 		scanf("%d",&flag);//录入 		switch(flag) 		{ 			case 1: printf("请输入您要录入的人数：");                                 getchar();                                 scanf("%d",&n);                                 zj(n);                                 count += n;                                 break; 			case 2: count=sc(count);                                 break; 			case 3: xg(count);                                 break; 			case 4: cx(count);                                 break; 		        case 5: yl(count);                                 break; 		        case 0: bccj();                                 break; 		       default: printf("输入错误，请重试！\n\n"); 		} 	}while(flag!=0); 	getchar();//getch();  	return 0; }  //0显示菜单 void welcome() { //	system("cls"); 	printf("*************欢迎使用学生成绩管理系统*****************\n"); 	printf("*----------------------------------------------------*\n"); 	printf("*                  1.录入成绩                        *\n"); 	printf("*                  2.删除成绩                        *\n"); 	printf("*                  3.修改成绩                        *\n"); 	printf("*                  4.成绩查询                        *\n"); 	printf("*                  5.显示成绩信息                    *\n"); 	printf("*                  0.保存信息并退出系统              *\n"); 	printf("**********************欢迎使用************************\n"); 	printf("选择操作<0-6>                                         \n"); 	return; }  //1增加成绩 void zj(int n)  {  	struct score stu[100];  	FILE *fp;  	fp=fopen("111.txt","a+");  	if(fp==NULL)  	{             printf("打开文件失败,请重试！\n");             fclose(fp);             exit(0); 	}  	printf("请输入全部学生的学号，姓名，班级，高数成绩，外语成绩，物理成绩，程序成绩，思修成绩，中传成绩；\n");  	int i;  	for(i=0;i<n;i++)  	{             printf("\n----第%d个学生----\n", i+1);             printf("学号:");             getchar();             scanf("%s",&stu[i].ID);              printf("姓名：");             getchar();             scanf("%s,",&stu[i].Name);              printf("班级：");             getchar();             scanf("%s",&stu[i].banji);              printf("高数成绩：");             getchar();             scanf("%d",&stu[i].gs);              printf("外语成绩：");             getchar();             scanf("%d",&stu[i].wy);              printf("物理成绩：");             getchar();             scanf("%d",&stu[i].wl);              printf("程序成绩：");             getchar();             scanf("%d",&stu[i].cx);              printf("思修成绩：");             getchar();             scanf("%d",&stu[i].sx);              printf("中传成绩：");             getchar();             scanf("%d",&stu[i].zz);              fprintf(fp,"%s %s %s %d %d %d %d %d %d\n",  //写入数据                 stu[i].ID,stu[i].Name,stu[i].banji,stu[i].gs,stu[i].wy,stu[i].wl,stu[i].cx,stu[i].sx,stu[i].zz);         }         fclose(fp);         fp = NULL;         printf("添加学生成功,请按任意键返回\n\n");  }  //2删除成绩 int sc(int n) {          if(n==0)           {             printf("已经没有学生成绩信息了,请按任意键返回\n\n");             return n; 	  }          struct score stu[100]; 	char ID[10];//学号  	printf("请输入你要删除的学生学号:");         getchar(); 	scanf("%s", &ID);          int c=0,find=0,index=0; //用于记录目标序号  	FILE *fp; 	fp=fopen("111.txt","r"); 	if(fp==NULL) 	{             printf("打开文件失败,请联系管理员\n\n");             return -1; 	} 	while(!feof(fp))//不为空 	{ 		fscanf(fp,"%s %s %s %d %d %d %d %d %d\n",                 stu[c].ID,stu[c].Name,stu[c].banji,&stu[c].gs,&stu[c].wy,&stu[c].wl,&stu[c].cx,&stu[c].sx,&stu[c].zz);                 //&stu[c].ID,&stu[c].Name,&stu[c].banji,&stu[c].gs,&stu[c].wy,&stu[c].wl,&stu[c].cx,&stu[c].sx,&stu[c].zz); 		if(strcmp(ID,stu[c].ID)==0) 		{  find = 1;//根据学号查找，找到赋值为1                    index = c;//记录编号 		} 		c++; 	} 	fclose(fp);         fp = NULL;  	if(find==0) 	{            printf("没有该学生成绩信息,请按任意键返回\n\n");            return n; 	} 	else 	{            int i;            for(i=index;i<n-1;i++){                stu[i] = stu[i+1];            }            fp=fopen("111.txt","w"); //写入数据            for(i=0;i<n-1;i++)               {                 fprintf(fp,"%s %s %s %d %d %d %d %d %d\n",                    stu[i].ID,stu[i].Name,stu[i].banji,stu[i].gs,stu[i].wy,stu[i].wl,stu[i].cx,stu[i].sx,stu[i].zz);               }            fclose(fp);            fp = NULL;            printf("学号为%s的学生成绩删除成功,请按任意键返回\n\n",ID);            return n-1; 	} }  //3修改成绩 int xg(int n) { 	struct score stu[100];  	FILE *fp;  	char ID[10];  	int find=0;  	printf("请输入要修改的学生学号:");         getchar();  	scanf("%s",ID);   	fp=fopen("111.txt","r");  	if(fp==NULL)  	{            printf("文件打开失败,请联系管理员\n");            return -1;  	}  	int c=0;  	while(!feof(fp)) 	{ 	 	fscanf(fp,"%s %s %s %d %d %d %d %d %d\n",                   stu[c].ID,stu[c].Name,stu[c].banji,&stu[c].gs,&stu[c].wy,&stu[c].wl,&stu[c].cx,&stu[c].sx,&stu[c].zz); 	 	if(strcmp(ID,stu[c].ID)==0) 		 { 		 	find=1; 		 	//修改操作 		 	printf("找到你要修改成绩的同学,请输入他的成绩:\n"); 		 	printf("高数成绩: %d,新成绩为:",stu[c].gs);                         getchar(); 		 	scanf("%d",&stu[c].gs);  		 	printf("外语成绩: %d,新成绩为:",stu[c].wy);                         getchar(); 		 	scanf("%d",&stu[c].wy);  		 	printf("物理成绩: %d,新成绩为:",stu[c].wl);                         getchar(); 		 	scanf("%d",&stu[c].wl);  		 	printf("程序成绩: %d,新成绩为:",stu[c].cx);                         getchar(); 		 	scanf("%d",&stu[c].cx);  		 	printf("思修成绩: %d,新成绩为:",stu[c].sx);                         getchar(); 		 	scanf("%d",&stu[c].sx);  		 	printf("中传成绩: %d,新成绩为:",stu[c].zz);                         getchar(); 		 	scanf("%d",&stu[c].zz);  		}   		c++;  	} 	fclose(fp);         fp = NULL; 	if(find==0) 	{            printf("没有找到要修改的学生记录,请按任意键退出\n\n"); 	} 	else  	{            fp=fopen("111.txt","w");            int i;            for(i=0;i<n;i++)               {                 fprintf(fp,"%s %s %s %d %d %d %d %d %d\n", //更新数据                  stu[i].ID,stu[i].Name,stu[i].banji,stu[i].gs,stu[i].wy,stu[i].wl,stu[i].cx,stu[i].sx,stu[i].zz);               }            fclose(fp);            fp = NULL;            printf("学号为%s同学的成绩已经修改成功,请按任意键返回\n\n",ID);  	}   	return 1; }  //4成绩查询 void cx(int n) //n全班人数 { 	int k; 	do 	{ 		showcxmenu(); 		scanf("%d",&k); 		switch(k) 		{ 			case 1:xhcx(n);break;//学号查询 			case 2:xmcx(n);break;//姓名查询 			case 0:break; 			default:printf("输入错误，请重新选择\n\n"); 		} 	}while(k!=0); 	return; }  //4.0查询菜单 void showcxmenu() { //	system("cls"); 	printf("*----------------------------------------------------*\n"); 	printf("*                 根据制定查询的内容                 *\n"); 	printf("*----------------------------------------------------*\n"); 	printf("*               1： 按学号查询                       *\n"); 	printf("*               2： 按姓名查询                       *\n"); 	printf("*               0： 退出查询系统，返回主系统         *\n"); 	printf("*----------------------------------------------------*\n"); 	printf("选择操作<0-3>                                         \n"); }  //4.1学号查询 void xhcx(int n) { 	struct score stu[100]; 	char ID[10]; 	printf("请输入你要查询学生的学号：");         getchar(); 	scanf("%s",&ID);  	FILE *fp; 	fp=fopen("111.txt ","r"); 	if(fp==NULL) 	{            printf("打开文件失败！\n");            exit(0); 	} 	int i = 0; 	while(!feof(fp)){ 		fscanf(fp,"%s %s %s %d %d %d %d %d %d\n",                    stu[i].ID,stu[i].Name,stu[i].banji,&stu[i].gs,&stu[i].wy,&stu[i].wl,&stu[i].cx,&stu[i].sx,&stu[i].zz); 		i++; 	} 	for(i=0;i<n;i++) 	{ 		if(strcmp(ID,stu[i].ID)==0) 		{                      printf("学号\t姓名\t 班级\t高数\t外语\t物理\t程序\t思修\t中传\n");                      printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",                           stu[i].ID,stu[i].Name,stu[i].banji,stu[i].gs,stu[i].wy,stu[i].wl,stu[i].cx,stu[i].sx,stu[i].zz);                      printf("按任意键返回\n\n");                      fclose(fp);                      return; 		} 	} 	printf("未找到要查询学生的成绩，请重试！\n\n"); 	fclose(fp);         fp = NULL; 	return; }  //4.2姓名查询 void xmcx(int n) {   	struct score stu[100]; 	char Name[25]; 	printf("请输入你要查询学生的姓名：");         getchar(); 	scanf("%s",&Name); 	FILE *fp; 	fp=fopen("111.txt ","r"); 	if(fp==NULL) 	{            printf("打开文件失败！\n");            exit(0); 	} 	int c = 0; 	while(!feof(fp)){ 		fscanf(fp,"%s %s %s %d %d %d %d %d %d\n",                     stu[c].ID,stu[c].Name,stu[c].banji,&stu[c].gs,&stu[c].wy,&stu[c].wl,&stu[c].cx,&stu[c].sx,&stu[c].zz); 		c++; 	} 	int i; 	for(i=0;i<n;i++) 	{ 		if(strcmp(Name,stu[i].Name)==0) 		{ 			printf("学号\t姓名\t 班级\t高数\t外语\t物理\t程序\t思修\t中传\n"); 			printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",                           stu[i].ID,stu[i].Name,stu[i].banji,stu[i].gs,stu[i].wy,stu[i].wl,stu[i].cx,stu[i].sx,stu[i].zz); 			printf("按任意键返回\n\n"); 			fclose(fp); 			return; 		} 	} 	printf("未找到要查询学生的成绩，请重试！\n\n"); 	fclose(fp);         fp = NULL;         return; }  //5预览成绩信息 void yl(int n) { 	struct score stu[200]; 	int i; 	printf("成绩信息如下：\n"); 	FILE *fp; 	fp=fopen("111.txt","r"); 	if(fp==NULL) 	{              printf("打开文件失败,请重试！\n\n");              fclose(fp);              exit(0); 	} 	printf("学号\t\t   姓名\t\t    班级\t高数\t外语\t物理\t程序\t思修\t中传\n"); 	int c = 0; 	while(!feof(fp)) 	{             f

user: user-2
content: 用了getch（）函数，要加上头文件<conio.h>

user: user-3
content: 主函数当前总人数为啥要除14啊   求大佬讲解

user: user-0
content: 我用的是dev ，5.6.3版本的

user: user-4
content: 除了一些小BUG，VS2012正常运行。

user: user-5
content: VC2008 所有功能正常呀..

user: user-0
content: 引用 4 楼 user-6的回复:对， 参考一下这个 https://blog.csdn.net/zhanghaiyang9999/article/details/107032563 删除后还是不管用

user: user-6
content: 对， 参考一下这个 https://blog.csdn.net/zhanghaiyang9999/article/details/107032563

user: user-0
content: 引用 1 楼 user-6的回复:把scanf最后的\n都去掉 请问大佬说的是fscanf吗？

user: user-0
content: 引用 1 楼 user-6的回复:把scanf最后的\n都去掉 请问大佬说的是fscanf吗？

user: user-6
content: 把scanf最后的\n都去掉