user-0 提问: 为什么打印不出来？？？急！！！！

回复:
user: user-1
content: 你这个代码太长了。 你如果用管理员登录的话，然后添加功能它调用的是fun1，这里仅仅只是scanf到student了，并没有保存到文件。 你再重新打开软件用普通学生登录查看？

user: user-2
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-0
content: #define N 50  struct info {  char id[10];  char name[10];  int banji;  char zhuanye[10];  int math;  int chinese;  int english;  int computer;  float ave; }student[N]; int len;  char a[] = "123456", b[] =  "654321", c[] = "13579", d[] = "123456"; int login(int n) {     char e[20], f[20];     printf("\t**************welcome***************\n");     printf("\t***********学生成绩管理系统************\n");     printf("\t**************************************\n");       printf("请输入账号：");       gets(e);       printf("请输入密码：");       gets(f);     printf("请选择身份：");     printf("1-管理员,");     printf("2-学生:");     scanf("%d", &n);     fflush(stdin);     switch(n)     {  case 2:       while(strcmp(e, a) != 0)   {    printf("用户名不存在！\n");           printf("请输入账号：");           gets(e);           printf("请输入密码：");           gets(f);   }       while(strcmp(f, b) != 0)   {           printf("密码错误，请重新输入！\n");           printf("请输入密码：");           gets(f);   }       break;     case 1:      while(strcmp(e, c) != 0)  {           printf("用户名不存在！\n");           printf("请输入账号：");           gets(e);           printf("请输入密码：");           gets(f);  }      while(strcmp(f, d) != 0)      {           printf("密码错误，请重新输入！\n");           printf("请输入密码：");           gets(f);      }      break;  }  return n; } void home() {  printf("\t**************welcome***************\n");     printf("\t***********学生成绩管理系统************\n");     printf("\t**************************************\n"); } void function1() {  char ch[10];  char n[10];  int i, j;        void read();  read();     system("cls"); 	  printf("请输入自己的学号和要查询的课程\n");     scanf("%s %s", n, ch);  for (i=0; i<len; i++)  {   if (strcmp (n, student[i].id) == 0)   {    if(strcmp (ch, "math") == 0)    {     printf("%d\n", student[i].math);     break;    }    if(strcmp (ch, "chinese") == 0)    {     printf("%d\n", student[i].chinese);     break;    }    if(strcmp (ch, "computer") == 0)    {     printf("%d\n", student[i].computer);     break;    }    if(strcmp (ch, "english") == 0)    {     printf("%d\n", student[i].english);     break;    }   }  }           } void function2() {  void read();   char n[10];  int i;  system("cls");  read();    printf("请输入自己的学号\n");  scanf("%s", n);    for (i=0; i<len; i++)  {   if (strcmp(n, student[i].id) == 0)   { 	      printf(" math：%d chinese:%d english:%d computer:%d\n", student[i].math, student[i].chinese,     student[i].english, student[i].computer);      break;   }  }     } void function3() {     } void function0() {  exit(0); }   void fun1() {  int i;    system("cls");   printf("请输入要添加的个数：");    scanf("%d", &len);   printf("请依次输入学生的学号，姓名，班级，专业，4门课的成绩:\n");    for (i=0; i<len; i++)  {   scanf("%s%s%d%s%d%d%d%d",student[i].id, student[i].name, &student[i].banji, student[i].zhuanye, &student[i].math, &student[i].chinese,     &student[i].english, &student[i].computer);  }  printf("输入成功！\n"); }  void fun2() { 	int a; 	void f1();     void f2(); 	void f3(); 	void f4();  	printf("请输入查询要求："); 	printf("1-专业");     printf("2-班级"); 	printf("3-学号"); 	printf("4-课程"); 	scanf("%d", &a);  	switch(a) 	{ 	case 1:f1();break; 	case 2:f2();break; 	case 3:f3();break; 	case 4:f4();break; 	} 	 	 } //按专业查询 void f1() { 	char a[10];     int i; 	 	printf("请输入要查询的专业："); 	scanf("%d", a); 	 	for(i=0; i<len; i++) 	{ 		if(strcmp(a, student[i].zhuanye) == 0) 		printf("id:%s name:%s math：%d chinese:%d english:%d computer:%d\n",student[i].id, student[i].name, student[i].math, student[i].chinese,     student[i].english, student[i].computer); 	}  }  //按班级查询 void f2() { 	char a;     int i; 	 	printf("请输入要查询的班级："); 	scanf("%d", &a); 	 	for(i=0; i<len; i++) 	{ 		if(a == student[i].banji) 		printf("id:%s name:%s math：%d chinese:%d english:%d computer:%d\n",student[i].id, student[i].name, student[i].math, student[i].chinese,     student[i].english, student[i].computer); 	} }  //按学号查询 void f3() { 	char a[10];     int i, len;  	printf("请输入要查询的学号：");     scanf("%s", a);  	for(i=0; i<len; i++) 	{ 		if(strcmp(a, student[i].id)==0) 		{ 			printf("id:%s name:%s math：%d chinese:%d english:%d computer:%d\n",student[i].id, student[i].name, student[i].math, student[i].chinese,     student[i].english, student[i].computer); 		} 	} } //按指定课程查询  void f4() {     int i; 	char ch[10];  	printf("请输入要查询的课程：");     scanf("%s", ch);  	for (i=0; i<len; i++)  {    if(strcmp (ch, "math") == 0)    {     printf("%s %d\n", student[i].name, student[i].math);    }    if(strcmp (ch, "chinese") == 0)    {     printf("%s %d\n", student[i].name, student[i].chinese);    }    if(strcmp (ch, "computer") == 0)    {     printf("%s %d\n", student[i].name, student[i].computer);    }    if(strcmp (ch, "english") == 0)    {     printf("%s %d\n", student[i].name, student[i].english);    }   } }  //升序 /*void paixu1() { 	int i, j;  	for(i=0; i<len-1; i++) 	{ 		for (j=0; j<len-i-1; j++) 		{ 			if (student[i].) 		} 	} }*/  void fun3() {  char s[10];  int i, j;  char n[10], x;  system("cls");  printf("请输入要删除的学生的学号：");  scanf("%s", s);  for (i=0; i<len; i++)  {   if (strcmp(s, student[i].id) == 0)   {       printf("%s", student[i].id);       break;   }  }  printf("是否删除该学生成绩：y\n ");  scanf("%c", &x);  if(x=='y')  {   for(j=i; j<len; j++)   {    student[j] = student[j+1];     }   len = len - 1;   printf("删除成功。\n");  }   } void fun4() {  char s[10];  int i, j;  system("cls");  printf("请输入要修改的学生的学号：");  scanf("%s", s);  for (i=0; i<len; i++)  {   if (strcmp(s, student[i].id) == 0)   {    printf("id: %s name: %s banji : %d zhuanye: %s math：%d chinese:%d english:%d computer:%d\n", student[i].id, student[i].name,     student[i].banji, student[i].zhuanye, student[i].math, student[i].chinese,                student[i].english, student[i].computer);          printf("请重新输入该学生的相关信息：\n");    {     scanf("%s%s%d%s%d%d%d%d",student[i].id, student[i].name, &student[i].banji, student[i].zhuanye,      &student[i].math, &student[i].chinese, &student[i].english, &student[i].computer);    }    break;   }  }       } void fun5() { 	exit(0); } void fun6() {  FILE *fp1, *fp2;     int i, j;     system("cls");  if ((fp1 = fopen("data.txt", "wb"))==NULL)  {   printf("error");   exit(1);  }  for (i=0; i<len; i++)  {   fwrite(&student[i], sizeof(struct info), 1, fp1);  }    fclose(fp1);  fp2 = fopen("len.txt", "w");  fprintf(fp2, "%d", len);  fclose(fp2);  printf("保存成功\n");     } void fun0() { 	exit(0); }  void read() { 	FILE *fp1, *fp2; 	int i; 	if ((fp1 = fopen("data.txt", "rb"))==NULL)  {   printf("error");   exit(1);  }  for (i=0; i<len; i++)  {   fread(&student[i], sizeof(struct info), 1, fp1);  }  fclose(fp1);    fp2 = fopen("len.txt", "r");  fscanf(fp2, "%d", &len);  fclose(fp2);  }      void exe3() { begin:  int a, n, b, c;  char y;      a = login(n);      system("cls");      home();   while(1)   { 	  switch(a) 	  {          case 2:              printf("1-查询某门课程的得分\n");              printf("2-查询全部课程的得分\n");              printf("3-修改密码\n");              printf("0-退出");              scanf("%d", &b); 			 getchar();          switch(b) 		 {         case 1: function1(); break;         case 2: function2(); break;         case 3: function3(); break;         case 0: function0(); break; 		 }          break;          case 1:              printf("1-添加\n");              printf("2-查询\n");              printf("3-删除\n");              printf("4-修改\n");              printf("5-浏览\n");              printf("6-存盘\n");              printf("0-退出\n");              scanf("%d", &c); 			 getchar();          switch(c) 		 {          case 1: fun1(); break;          case 2: fun2(); break;          case 3: fun3(); break;          case 4: fun4(); break;          case 5: fun5(); break;          case 6: fun6(); break;          case 0: fun0(); break; 		 }          break;   	  }   } }  这是改了哈的，就是那个全局变量len，在我关了程序重新运行时，len有没有值了，可是存了文件的啊。

user: user-3
content: 打印不出来，肯定是程序跑到那一步中断了。楼主单步跟一下，就知道了，比如：我单步跟到 a = login(n); 就会提示 n 没有初始化。  将n初始化后就可以继续调试下一步了……

user: user-0
content: 引用 3 楼 qq_37171619 的回复:为什么会跳过啊？求大神。 看了2天了，还是不知道为什么，总觉得那个len没有被赋值一样。

user: user-4
content: 给你个建议，如果你不会单步调试，可以在每一小段语句后面加输出语句，然后自己试下相关值是否正确，如果值和自己预期值一样，就说明语句没问题，否则就说明这段语句出问题了。  不要指望别人帮你把错误找出来，很多时候出问题都是需要自己去解决的。

user: user-0
content: 为什么会跳过啊？求大神。

user: user-0
content: 我觉得是那个循环没执行，可是我给那个len赋了值得啊。

user: user-4
content: 打印不出来，一般都是输出语句被跳过了（前提是你的程序没什么其他语句错误），楼主去检查下你的你的判断条件是否正确。  实在不行，建议楼主单步调试下。