如何验证结构中是否存在相同的信息?



我在做一个结构来注册学生的信息,之前我问用户他想注册多少个,然后继续用 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;

但是我怎样才能一次做 1 个呢?

从你的问题我认为fflush不起作用 您可以定义一个简单的刷新函数来代替它

void _flush() {
int c;
while((c = fgetc(stdin)) != EOF) {
if(c == 'n') break;
}
}

此外,您应该使用fgets而不是gets,因为gets不检查溢出,这使得它很危险,而且它在 C 标准中不再存在!

相关内容

最新更新