[C con Clase] ficheros

felician draghici felix1900toamna en yahoo.es
Vie Jun 14 01:51:20 CEST 2013


Hola, alguien me puede echar una mano con la escritura de un fichero?
No logro entender porque no me escribe en el fichero comidas.plato y luego no saca nada del fichero y lo tengo que escribir de nuevo,como si no se almacena nada cuando se vuelve a ejecutar el programa.
Tengo una struct con todos los datos necesarios y la funcion para guardar el nombre de la comida, su precio, y referencia.
Seria para buscar el plato por su referencia y que te muestre el precio y el nombre de esta.

Gracias por tu tiempo, un saludo




struct pedido{
         char telefono[50];//numero de telefono del cliente
         char calle[50];//nombre de calle del cliente
         char portal[50];
         char piso[50];
         float pedidos;//valor pedido
         float total_pedidos;//valor total de los pedidos
         float precio;
         int referencia;
         char plato[50];   
       };


struct pedido comidas_precios(struct pedido comidas)
{
    struct pedido {//estructura para lectura
         int ref;
         char comida[50];
         float prec;
        }lectura;   
       
     int a;  
     int encontrado=0;  
     lectura.ref=0;
     //int com,lec;   
    
     for(a=0;a<50;a++)
     {
        comidas.plato[a] = '\0'; 
        lectura.comida[a] ='\0';
     }
     system("cls");   
     FILE *fc;//fc = fichero comidas
     fc=fopen("C://c_files//proyecto//comidas.txt","ab+");
     
     if(fc==NULL)
     {
        printf("\nEl fichero no existe");
     }
     else
     {
         printf("\nIntroduce la referencia de la comida: ");
         scanf("%d",&lectura.ref);
         fflush(stdin);    
         rewind(fc);//pone el fichero desde el principio
         
         printf("\n%d",lectura.ref);
         
         do
         {
            fread(&comidas,sizeof(struct pedido),1,fc);
            if(lectura.ref == comidas.referencia)
            {                           
                 encontrado = 1; 
                 printf("\nSi"); 
                 break;                                          
            }
         }while(!feof(fc));
         
         
         if(encontrado==1)
         {    
                fgets(comidas.plato,1,fc);
                printf("\nReferencia: %d",comidas.referencia);      
                printf("\nComida: %s",comidas.plato);
                printf("\nPrecio: %.2f",comidas.precio);
         }
         else
         {
             comidas.referencia=lectura.ref;//
             printf("\n%d",comidas.referencia);//
             printf("\nNombre del plato: ");
             gets(comidas.plato);
             printf("\nIntroduce el precio de %s: ",comidas.plato);
             scanf("%f",&comidas.precio);
             fflush(stdin);
             
             printf("\n%s",comidas.plato);
                        
         }
         fwrite(&comidas,sizeof(struct pedido),1,fc);
        //fgets(comidas.plato,fc);
     }
     
    fclose(fc);   
  getchar();
return comidas;    
}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130614/f32cd7dd/attachment.html>


Más información sobre la lista de distribución Cconclase