Primero quisiera aclarar que soy novato programando, estoy apenas aprendiendo punteros y por eso no se lo he integrado al siguiente codigo.
Estoy intentanto realizar un programa para el control de notas. Ya logré fijar y mostrar los nombres y apellidos de los estudiantes, luego introduje los nombres de las materias en una variable char en el Main, para luego copiarlos con strcpy a cada estructura (Me imagino que hay mejores formas de hacerlo pero esta es la que mi ignorancia me permite, por ahora)
Mi problema es que al introducir las notas, el nombre de la primera materia se mantiene pero el resto de los nombres se pierde, mostrandome ASCII. Verifiqué antes de llegar a esa parte del código y los nombres se guardan bien pero despues de alli se daña. Que consejos me dan?
Aca el código:
Estoy intentanto realizar un programa para el control de notas. Ya logré fijar y mostrar los nombres y apellidos de los estudiantes, luego introduje los nombres de las materias en una variable char en el Main, para luego copiarlos con strcpy a cada estructura (Me imagino que hay mejores formas de hacerlo pero esta es la que mi ignorancia me permite, por ahora)
Mi problema es que al introducir las notas, el nombre de la primera materia se mantiene pero el resto de los nombres se pierde, mostrandome ASCII. Verifiqué antes de llegar a esa parte del código y los nombres se guardan bien pero despues de alli se daña. Que consejos me dan?
Aca el código:
Código (c) [Seleccionar]
#include<stdio.h>
#include<string.h>
#define MAX 10
typedef struct asignaturas{
char nombre[MAX];
int nota[4];
}asignatura;
typedef struct estudiantes{
char nombre[MAX];
char apellido[MAX];
asignatura materia[3];
}escolar;
escolar DatosAlum();
escolar IntroNota(int cant_alum,int indice);
int main(){
int cant_alum, i,j;
char nom_mate[3][MAX];
printf("Introduzca cantidad de alumnos: \n");
scanf("%d",&cant_alum);
escolar alumno[cant_alum]; //Declarando variable tipo struct "escolar"
for(i=0;i<cant_alum;i++){
printf("Alumno nro %d: \n", i+1);
alumno[i]=DatosAlum(); //Introduciendo nombres y apellidos de alumnos
}
printf("Introduzca nombre de materias: \n");
for(i=0;i<3;i++){
printf("Materia nro %d: ",i+1);
fflush(stdin);
gets(nom_mate[i]);
}
for(i=0;i<cant_alum;i++){
for(j=0;j<3;j++){
strcpy(alumno[i].materia[j].nombre,nom_mate[j]); //Aca copìo y pego los nombres en las estructuras.
}
}
printf("Introduzca notas: \n");
for(i=0;i<cant_alum;i++){
printf("Alumno: %s %s\n",alumno[i].nombre,alumno[i].apellido);
for(j=0;j<3;j++){
printf("Materia: %s \n",alumno[i].materia[j].nombre); //Aqui se daña mi codigo
//El primer nombre se imprime bien, el resto sale mal.
alumno[i]=IntroNota(cant_alum,j);
printf("valor de j= %d",j);
}
}
getch();
return 0;
}
escolar DatosAlum(){
escolar alumno;
printf("Nombre: ");
fflush(stdin);
gets(alumno.nombre);
printf("Apellido: ");
fflush(stdin);
gets(alumno.apellido);
return alumno;
}
escolar IntroNota(int cant_alum,int indice){
escolar alumno;
int i;
for(i=0;i<4;i++){
printf("Nota %d: \n",i+1);
scanf("%d",&alumno.materia[indice].nota[i]);
}
return alumno;
}