duda con array de estructuras

Iniciado por _OLAYA_, 16 Diciembre 2016, 21:50 PM

0 Miembros y 1 Visitante están viendo este tema.

_OLAYA_

tengo un fichero txt organizado en columnas, la primera tiene un numero entero del 1 en adelante, la segunda tiene un nombre y la tercera un precio. El caso es que no soy capaz de cargar el fichero en mi programa.  

#include<stdio.h>
#define CadNom 30
#define NumPro 100
struct carta
{
   int CodProducto;
   char nombre[CadNom];
   float precio;

};
struct carta productos[NumPro];

void cargarCarta(FILE *f, struct carta productos[NumPro], int *tamanio);
void imprimirCarta(struct carta productos[NumPro], int tamanio);
main()
{
   FILE *fich;
   int tamanio;

   fich = fopen("carta.txt", "r");

   if(fich == NULL) return -1;

   cargarCarta(fich, productos, &tamanio);

   fclose(fich);

   imprimirCarta(productos, tamanio);
}

void cargarCarta(FILE *f, struct carta productos[NumPro], int *tamanio)
{
   /* CARGA LA CARTA AL PROGRAMA */
   int i=0;

   while(fscanf(f, "%d" "%s" "%f", &productos[i].CodProducto, productos[i].nombre, &productos[i].precio) != EOF)
   {
       i++;
   }
   *tamanio = i;
}

void imprimirCarta(struct carta productos[NumPro], int tamanio)
{
   /*SE IMPRIME LA CARTA*/
   int i=0;

   printf("Codigo del producto\tNombre\t\tProducto");
   printf("\n el tamanio es %d", tamanio);
   while (i < tamanio)
   {
       printf("%d\n", productos[i].CodProducto);
       i++;
   }

}



Mod: No escribir en mayúsculas


_OLAYA_

Ya lo he conseguido, para hacerme menos lió he separado los fscanf

fscanf(f, "%d", &productos[i].CodProducto); 
fscanf(f, "%s", productos[i].nombre);
fscanf(f, "%f", &productos[i].precio);



Y luego un fallo de concentración, después del valor de cada precio tenía un espacio y el símbolo del euro en el fichero.