26/01/2014, 06:24
|
| | Fecha de Ingreso: enero-2014
Mensajes: 3
Antigüedad: 11 años Puntos: 0 | |
Respuesta: Almacenar datos de fichero en estructura Cita:
Iniciado por iFuSiiOnzZ 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 |