Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/06/2014, 03:31
Banshi
Invitado
 
Mensajes: n/a
Puntos:
Problema con estructura y ficheros

Buenas,
A ver si me podeis echar un cable con este código, necesito leer un fichero de texto con el siguiente formato:
Nombre película
Año
Recaudación

Conforme voy leyendo cada línea, tengo que ir metiendo el contenido en la variable correspondiente de un struct. Para leer uso fgets, el problema viene cuando lo que quiero almacenar no es una cadena, sino un int o float y entonces uso fscanf, pero ya no me recoge bien los valores y me hace cosas extrañas. He de decir que me tengo que limitar a lo aprendido en clase así que no puedo usar atoi,atof,strcpy, etc...solo he dado funciones de lectura y escritura. Si recorro el fichero y solo leo cadenas no tengo problemas, si solo leo los int y float tampoco, pero si mezclo fgets con fscanf(es necasario para indicar el formato de lo que recojo) es cuando me da problemas. Pongo el código a ver si me podeis echar un cable, sino hay otro forma usaré los cambios de variable con atoi, atof.Gracias.

Saludos.

El código es el siguiente:

Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAM 100
 
typedef struct
{
char titulo[TAM];
int anio;
float r;
} Tpeli;
 
int main()
{
//declaracion de variables
 
Tpeli peliculas[TAM];
FILE *f;
f=fopen("BBDD.txt","r");
int i,tamanio_array=0;
 
if( (f==NULL))
{
printf("error de apertura\n");
}
else
{
char cad[TAM];

//fscanf(f,"%s",cad);
fgets(cad,100,f);
while(!feof(f))
{
for(i=0; i<TAM && !feof(f); i++)
{

fscanf(f,"%d",&peliculas[i].titulo);
fscanf(f,"%f",&peliculas[i].anio);
fgets(cad,100,f);
tamanio_array++;
}
 
}
fclose(f);
}
for(i=0;i<tamanio_array;i++){
printf("Nombre película %d: %s\n",i,peliculas[i].titulo);
printf("Anio: %d\n",peliculas[i].anio);
printf("Recaudacin: %.2f\n",peliculas[i].r);
printf("\n\n");
}
return 0;
}
El problema era que el fscanf deja residuo y es lo que leía acontinuación el fgets. Lo he solucionado con un fgets(f,2,cad) antes del fgets principal del bucle

Última edición por Banshi; 18/06/2014 a las 05:38