Tengo un problema con mi codigo, me compila sin problemas pero no ejecuta ninguna instruccion .
alguien podria ayudarme o marcar donde me esta fallando porfavor ?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char profesor;
int materia;
struct alumno *alumnoLi;
}listas;
struct alumno{
char *nombre;
int matricula;
char fecha[30];
};
listas *li;
void vaciar(char temp[]);
void copiar(char temp[],int i);
int main(){
int i,j;
char temp[50];
int cont=0;
char aux;
FILE *f;
f=fopen("Lista1.txt","r");
if(f==NULL){
printf("no se ha podido abrir el archivo \n ");
exit(1);
}
while(!feof(f)){
fgets(temp,50,f);
cont++;
}
rewind(f);
li=(listas*)malloc(cont*sizeof(listas));
if(li==NULL){
printf("no se ha podido reservar espacio \n");
exit (1);
}
for (i=0; !feof(f); i++){
vaciar(temp);
aux='0';
for(j=0;aux != '-';j++ ){
aux=fgetc(f);
if(aux!='-'){
temp[j]=aux;
}
}
copiar(temp,i);
fgets(temp,4,f);
li->alumnoLi[i].matricula=atoi(temp);
printf("Nombre: %s Matricula: %i \n",li->alumnoLi[i].nombre,li->alumnoLi[i].matricula);
}
system("pause");
return 0;
}
void vaciar(char temp[]){
int i ;
for(i=0; i<50; i++){
temp[i] = '\0';
}
}
void copiar(char temp[],int i){
int N = strlen(temp) +1;
li->alumnoLi[i].nombre = (char*)malloc(N*sizeof(char));
if(li->alumnoLi[i].nombre == NULL){
printf("no se ha podido reservar meoria 2");
exit(1);
}
strcpy(li->alumnoLi[i].nombre,temp);
}
:-\ :-\
Pasa el archivo Lista1.txt.
Veo un fallo en:
//...
//leer nombre hasta final del fichero
for (i=0;!feof(f);i++){
// Conseguir los nombres de los archivos y copiarlos en las estructuras
}
// copia la matricula con 9 digitos del fichero
fgets(temp,9,f);
// atoi: pasar numeros en cadenas de caracteres a enteros
li[i].alumnoLi[i].matricula=atoi(temp);
¿Qué elemento crees que apunta i? Compruébalo.
Por otra parte: la carga del número de matrícula está fuera del for.
Cita de: fary en 3 Septiembre 2019, 15:47 PM
Pasa el archivo Lista1.txt.
el contenido del archivo de texto (.txt) seria este:
Giovanni-201649716
Yoselin-201742587
Jose-201646812
Carlos-201623781
Cita de: MAFUS en 3 Septiembre 2019, 18:47 PM
Veo un fallo en:
//...
//leer nombre hasta final del fichero
for (i=0;!feof(f);i++){
// Conseguir los nombres de los archivos y copiarlos en las estructuras
}
// copia la matricula con 9 digitos del fichero
fgets(temp,9,f);
// atoi: pasar numeros en cadenas de caracteres a enteros
li[i].alumnoLi[i].matricula=atoi(temp);
¿Qué elemento crees que apunta i? Compruébalo.
Por otra parte: la carga del número de matrícula está fuera del for.
Ya actualice el codigo y corregi los errores que me mencionas pero aun no trabaja como esperaria
Hay que ir resolviendo poco a poco. ¿Cómo te ha quedado ahora?