C/Visual C - Estructura en Ficheros

 
Vista:

Estructura en Ficheros

Publicado por LoloVet (2 intervenciones) el 29/11/2017 06:13:19
Hola, necesito ayuda con este programa, se trata de una Pokédex sencilla, en pocas palabras un listado que se alamacenará en una estructura a la vez que se muestra, el fichero se encuentra de esta forma :

001-Bulbasaur-Planta/Veneno
002-Ivysaur-Planta/Veneno
003-Venusaur-Planta/Veneno
004-Charmander-Fuego
005-Charmeleon-Fuego etc...

Mi problema es que no sale del ciclo FOR, al ejecutarse el programa, almacena y muestra el listado pero el programa muestra un error de exe y se detiene, todo lo que está después del ciclo, no sé realiza. Muchas gracias de antemano. Aquí el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
FILE *doc=fopen("Pokemons.txt", "r");
char temp[50];
//doc=fopen("Pokemons.txt", "r");
//----------------------------------------------------------------------Estructura
typedef struct
{
	int Numero;
	char *Nombre;
	char *Tipo;
	char *Evolucion;
 
}Pokemons;
 
Pokemons *Pok;
 
//----------------------------------------------------------------------Funcion numero
 
void copiarnumero(char temp[], int i)
{
	int x;
	x=strlen(temp)+1;
	Pok[i].Numero=atoi(temp);
	//printf("\n Elejido N.%d ", Pok[i].Numero);	  
}
 
//----------------------------------------------------------------------Funcion nombre
 
void copiarnombre(char temp[], int i)
{
	int x;
	x=strlen(temp)+1;
	Pok[i].Nombre=(char*)malloc(x*sizeof(char));
 
	if(Pok[i].Nombre==NULL)
	{
		printf("\n No se reservo memoria:");
	}
	strcpy(Pok[i].Nombre, temp);
	//printf("\t %s", Pok[i].Nombre);
}
 
//----------------------------------------------------------------------Funcion tipo
 
void copiartipo(char temp[], int i)
{
	int x;
	x=strlen(temp)+1;
	Pok[i].Tipo=(char*)malloc(x*sizeof(char));
 
	if(Pok[i].Tipo==NULL)
	{
		printf("\n No se reservo memoria:");
	}
	strcpy(Pok[i].Tipo, temp);
	//printf("\n %s", Pok[i].Tipo);	  
}
 
//----------------------------------------------------------------------Funcion limpiar
void limpiar()
{
	int u;
 
    for(u=0;u<50;u++)
	{
		temp[u]='\0';
	}
}
 
//----------------------------------------------------------------------Funcion secuecia
int ingresar(int i, char leer, FILE *doc)
{
	int j=0;
 
	if(!feof(doc))
	   return 0;
 
	leer='\0';
	limpiar();
 
	for(j=0; leer!='-'; j++)         //numero
	{
		leer=fgetc(doc);
		if(leer !='-')
		  temp[j]=leer;
	}
	copiarnumero(temp,i);
	limpiar();
	leer='\0';
 
 
	for(j=0; leer!='-'; j++)        //nombre
	{
		leer=fgetc(doc);
		if(leer !='-')
		  temp[j]=leer;
	}
 
	copiarnombre(temp,i);
	limpiar();
	leer='\0';
 
	for(j=0; leer!='\n'; j++)      //tipo
	{
		leer=fgetc(doc);
		if(leer !='\n')
		  temp[j]=leer;
	}
	copiartipo(temp,i);
 
	printf("\n %d  %8s  %8s", Pok[i].Numero, Pok[i].Nombre, Pok[i].Tipo);
 
	ingresar(i+1, leer,doc);
}
 
 
//----------------------------------------------------------------------Funcion principal
 
int main()
{
 
	char leer;
	int  c=0,i=0;
 
 
	while(!feof(doc))
	{
		fgets(temp,50,doc);
		c++;
	}
 
	rewind(doc);
 
	Pok=(Pokemons*)malloc(c*sizeof(Pokemons));
 
	if(doc==NULL)
	  printf("\n Ingrese Pokemones al listado:");
 
    ingresar(i=0, leer, doc);
 
    fclose(doc);
	system("PAUSE");
	return 0;
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Estructura en Ficheros

Publicado por Tom (619 intervenciones) el 29/11/2017 10:57:38
¿ Puedes describir tu problema de forma más clara ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Estructura en Ficheros

Publicado por LoloVet (2 intervenciones) el 29/11/2017 16:17:23
No sale del ciclo FOR
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar