Autor
|
Tema: Estructuras Anidadas en C (Leído 2,721 veces)
|
Ghio97
Desconectado
Mensajes: 9
|
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); }
|
|
« Última modificación: 4 Septiembre 2019, 05:11 am por Ghio97 »
|
En línea
|
|
|
|
fary
|
Pasa el archivo Lista1.txt.
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
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.
|
|
|
En línea
|
|
|
|
Ghio97
Desconectado
Mensajes: 9
|
Pasa el archivo Lista1.txt.
el contenido del archivo de texto (.txt) seria este: Giovanni-201649716 Yoselin-201742587 Jose-201646812 Carlos-201623781
|
|
« Última modificación: 4 Septiembre 2019, 05:21 am por Ghio97 »
|
En línea
|
|
|
|
Ghio97
Desconectado
Mensajes: 9
|
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
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Hay que ir resolviendo poco a poco. ¿Cómo te ha quedado ahora?
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Estructuras anidadas, funciones y punteros
Programación C/C++
|
NathanD
|
9
|
10,772
|
18 Marzo 2013, 08:56 am
por 85
|
|
|
Ayuda con borrado en estructuras anidadas
Programación C/C++
|
JHodges
|
8
|
3,722
|
11 Junio 2015, 04:24 am
por rir3760
|
|
|
Estructuras anidadas en lenguaje C. -
Programación C/C++
|
NOB2014
|
3
|
4,343
|
5 Febrero 2017, 18:42 pm
por ivancea96
|
|
|
Ayuda con estructuras anidadas
Programación C/C++
|
mari2diaz
|
3
|
2,085
|
20 Julio 2018, 01:07 am
por engel lex
|
|
|
Estructuras Anidadas, dudas
Programación C/C++
|
mari2diaz
|
1
|
2,181
|
9 Febrero 2020, 00:16 am
por ivancea96
|
|