Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/01/2014, 05:35
Moralescmj
 
Fecha de Ingreso: enero-2014
Mensajes: 3
Antigüedad: 10 años, 3 meses
Puntos: 0
Almacenar datos de fichero en estructura

Hola a todos! Miren, lo que me ocurre es que nos acaban de explicar en clase muy por encima lo que son los struct y como funcionan, por lo que sé bastante poco, y resulta que nuestro profesor, nos ha mandado hacer un ejercicio que debe hacer lo siguiente:
Leer una serie de datos en un fichero que están estructurados en 3 columnas(por lo que los leo con fscanf) y almacenar estos en una estructura de datos para posteriormente volverlos a escribir un fichero nuevo.
Yo me he ido informando y he estado viendo que hay casos en los que se usa memoria dinámica o algo así, y es algo que nunca hemos visto y que además el profesor ha descartado. Parece ser que tengo que usar struct con vectores, pero con lo que intento siempre me da error. Esto es un intento:

Código:
#include <stdio.h>
#include <string.h>

#define N 200

struct productos{
	char codigoLeidoFichero[50];
	char nombre[50];
	double *precio;
};




int leerFichero(struct productos prod[])
{
	int i=0;
	FILE*f1=fopen("productos.txt","r");
	if(f1==NULL)
	{
		printf("Error al abrir el archivo\n");
		
	}
	else
	{
		while(!feof(f1))
		{
			fscanf(f1,"%s %s %lf",prod[i].codigoLeidoFichero,prod[i].nombre,prod[i].precio);
			i++;
		}
	}
	fclose(f1);
	return i;
}

void EscribirNuevoFichero(int i, struct productos prod[])
{
	int j=0;
	FILE*f1=fopen("nuevo.txt","w");
	while(j<=i)
	{
		fprintf(f1,"%s %s %lf",prod[j].codigoLeidoFichero,prod[j].nombre,*prod[j].precio);
		j++;
	}
	fclose(f1);
}
int main(void)
{
	struct productos prod[N];
	int i;
	
	leerFichero(prod);
	EscribirNuevoFichero(i,prod);
	return 0;
}
Como ven, mi estilo de programación no es muy bueno, pero ya irá mejorando, espero que podáis ayudarme; llevo mucho tiempo rompiéndome la cabeza
Muchas gracias!!