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

Cita:
Iniciado por iFuSiiOnzZ Ver Mensaje
Se me paso algo por algo, en el main lo que devuelva leerFichero(...) se lo tienes que asignar a la i que si no la i tendra un valor "random". Puede que sea esa la causa. En todo caso, usa printf para "debuggear".
La verdad es que me funciona tanto asignando como si no. La cosa es que ahora necesito que el programa me devuelva uno de esos productos si yo le escribo en pantalla su "código". He realizado alguna modificación para ello:
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\n",prod[i].codigoLeidoFichero,prod[i].nombre,&prod[i].precio);
			i++;
		}
	}
	fclose(f1);
	return i;
}

void EscribirNuevoFichero(int i, struct productos prod[])
{
	char codigo[50];
	int j=0;
	FILE*f1=fopen("nuevo.txt","w");
	while(j<=i)
	{
		fprintf(f1,"%s %s %lf\n",prod[j].codigoLeidoFichero,prod[j].nombre,prod[j].precio);
		
		if(strcmp(codigo,prod[j].codigoLeidoFichero)==0)
		{
			printf("El producto existe y es: %s %s %lf\n", prod[j].codigoLeidoFichero,prod[j].nombre,prod[j].precio);
		}
		else
		{
			printf("El producto no ha sido encontrado");
		}
		j++;
	}
	fclose(f1);
}
int main(void)
{	
	char codigo[50];
	struct productos prod[N];
	int i;
	printf("Introduce codigo: ");
	scanf("%s",codigo);
	leerFichero(prod);
	EscribirNuevoFichero(i,prod);
	return 0;
}
Lo que no se muy bien es qué tengo que poner después del strcmp para que me escriba exactamente lo que me ha encontrado. Muchas gracias