[C con Clase] Duda para almacenar datos leidos desde un archivo

Gabriel Casarsa gabriel_casarsa en yahoo.com.ar
Sab Ene 26 20:17:08 CET 2013


Hola, tengo un problema al que no encuentro solucion. Yo tengo creado un archivo de acceso aleatorio.No vale la pena ahondar demasiado en lo que hace el programa en si.
Leo bien todos los datos, pero a la hora de almacenarlos, tengo un error.
Apenas iniciado el for, guardo en una variable char una palabra. Esta palabra le guardo en la posicion j=0 de una variable char*.
Cuando guardo la siguiente iteración, me la guarda tanto en la posicion 0 como en la j=1.
O sea, al final de las 9 iteraciones, me queda el vector char* zonas[9] con 9 datos idénticos.
Calculo que el error esta en como defini las variables, pero tengo poca experiencia y no alcanzo a verlo. Si alguien me puede dar una mano se lo agradeceria!
Les dejo el código aca abajo!
Saludos y gracias!

#ifndef _HISTORIAL_H_
#define _HISTORIAL_H_
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void historial(){
 FILE *ptrdel;
	char archivodelitos[] = "delitos.txt";
char cadena[20];
	char fecha[20];
	char hora[20];
	char alarma[2];
 char *alarmas[9] = {0};
	char zona[2];
 char *zonas[9] = {0};
	char delito[20];
char *delitos[54] = {0};int i = 0; int d = 0; int j = 0;
	ptrdel = fopen(archivodelitos, "r");

	fseek(ptrdel,0,SEEK_SET);
		
	fscanf (ptrdel, "%s", cadena) != EOF;
	strcpy(fecha,cadena);
	fscanf (ptrdel, "%s", cadena) != EOF;
	strcpy(hora,cadena);
	
	for(j=0;j<9;j++,z++){
 	 fscanf (ptrdel, "%s", cadena) != EOF;
 	 strcpy(zona,cadena);
 	 zonas[j] = zona;
 	 fscanf (ptrdel, "%s", cadena) != EOF;
 	 strcpy(alarma,cadena);
 	 alarmas[j] = alarma;
 	 while(strcmp(cadena,",")!=0){
 		     if (strcmp(cadena,",")!=0){
 			     fscanf (ptrdel, "%s", cadena) != EOF;
 			     strcpy(delito,cadena);
 			     delitos[d] = delito;
 			     d++;
 			     }
 	 }
}
	
	printf("%s\n",fecha);
	printf("%s\n",hora);

	for(i=0;i<9;i++){
 	 printf("%d %s %c\n", i, zonas[i], alarmas[i]);
	}
	fclose(ptrdel);
}

#endif
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130126/68114093/attachment.html>


Más información sobre la lista de distribución Cconclase