Este es mi codigo a la hora de compilar y ejecutar todo bn, pero al momento de llenar los campos cuando te pide el q ingreses el sexo se estropea , ejemplo
1. Escriba su nombre: Pedro
1. Escriba su cedula: 2476451
1. escriba su sexo: 1. escriba su edad: desde aqui aparece junto en vez de dar una opcion da dos
1. escriba su carrera: 1. escriba su semestre aqui igual
tengo varios dias con esta duda estoy aprendiendo lenguaje c solo y apenas llevo varios meses si me ayudaran explicando que esta mal se los agradeceria
quiero llenar una tabla con diferentes datos y mostrar en pantalla
este es el codigo completo.
gracias de antemano...
#include<stdio.h>
#include<stdlib.h>
struct info_materia{
char materia[20];
int codigo;
int credito;
int calificacion;
}materia[4];
struct info_alumno{
char sexo[20];
char carrera[20];
int semestre;
int cedula;
int edad;
};
struct alumno{
char nombre[20];
struct info_alumno dato_alumno;
struct info_materia dir_materia;
float promedio;
}alumno[5];
int main(){
int i;
for(i=0;i<2;i++){
fflush(stdin);
printf("%d. Escriba su nombre: ",i+1);
gets(alumno[i].nombre);
printf("%d. Escriba su cedula: ",i+1);
scanf("%d",&alumno[i].dato_alumno.cedula);
printf("%d. escriba su sexo: ",i+1);
gets(alumno[i].dato_alumno.sexo);
printf("%d. escriba su edad: ",i+1);
scanf("%d",&alumno[i].dato_alumno.edad);
printf("%d. escriba su carrera: ",i+1);
gets(alumno[i].dato_alumno.carrera);
printf("%d. escriba su semestre",i+1 );
scanf("%d",&alumno[i].dato_alumno.semestre);
printf("\n");
}
for (i=0;i<2;i++){
printf("\nDatos del estudiante n° %d: ",i+1);
printf("\nNombre: %s",alumno[i].nombre);
printf("\nCedula: %d",alumno[i].dato_alumno.cedula);
printf("\nSexo: %s",alumno[i].dato_alumno.sexo);
printf("\nEdad:%s",alumno[i].dato_alumno.edad);
printf("\nCarrera: %s\n",alumno[i].dato_alumno.carrera);
printf("\nSemestre: %d\n",alumno[i].dato_alumno.semestre);
}
system ("pause");
return 0;
}
Mod: Los códigos deben ir en etiquetas GeSHi
Creo que el problema viene de cuando usas scanf (cliché). Prueba, a la hora de pedir el entero, esto:
char str_numero[10];
...
printf("%d. Escriba su cedula: ",i+1);
fgets(stdin, str_celula, 10);
alumno[i].dato_alumno.cedula = atoi(str_celula);
...
Eso sucede cuando se llana el buffer, intenta poner cin.ignore(); antes donde salta la linea
MOD: No reabrir temas antiguos
MOD: Tema cerrado