【发布时间】:2020-05-26 02:10:08
【问题描述】:
我正在做一个结构来注册学生的信息,之前我问用户他想注册多少,然后用 for 循环来做:
case 1:
printf("How many students you want to register?:(no more than 10) \n");
scanf("%d", &num);
fflush(stdin);
printf("\n");
for(int i=0;i<num;i++){
alumno[i]=llenarInfo(alumno[i]);
}
printf("---------------------\n");
但是我怎样才能一次做 1 个呢?我尝试在循环之后增加i,但是如果我注册 2 个或更多并且想要全部打印它们,它只会打印最后一个,并且在询问学生姓名(填写信息的 atm)时它会自动跳转到结构的下一个成员:
struct Usuario llenarInfo(struct Usuario alumno){
printf("Dame el nombre: ");
gets(alumno.nombre);
fflush(stdin);
printf("");
跳这个^^
printf("Dame el codigo de alumno: ");
scanf("%d", alumno.codigo);
fflush(stdin);
printf("");
printf("Dame el email: ");
scanf("%s", alumno.email);
fflush(stdin);
printf("");
printf("Que carrera estudia?: ");
scanf("%s", alumno.carrera);
fflush(stdin);
printf("");
printf("Cual es el sexo? H Hombre- M Mujer: ");
scanf("%s", alumno.sexo);
fflush(stdin);
printf("");
printf("Cual es la edad?: ");
scanf("%s", alumno.edad);
fflush(stdin);
printf("\n");
return alumno;
【问题讨论】:
-
循环遍历数组中的元素并使用
strcmp() == 0来检查字符串成员是否相等。见Why gets() is so dangerous it should never be used! -
(好吧——除非使用提供非标准实现的VS....)
-
显然 OP 没有使用 VS。因此“跳过这个^^”评论。
-
只需执行一个函数,使用 fgets 读取字符串并删除使用 fgets 获得的试用 \n
标签: c