Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - kristian_5

#1
Programación C/C++ / Problema Fwrite
1 Junio 2013, 15:46 PM
Hola pues estoy haciendo un programa de una base de datos de una frutería utilizando ficheros. Mi problema es que el Fwrite no me lo acaba de hacer bien. Y ya me estoy desesperando un poco porque soy incapaz de ver la razón.

Haber si podéis echarme una mano! Gracias.   

Aquí dejo el código en principio solo es de la función.

La cuestión de esta función es hacer compras automáticas desde un archivo "comprasxx".txt le pongo "manzanas 2" y lo que debe hacer es aumentar el inventario.



void compra_auto( int cont){    
        char fichero[10];
        char fruta[20];
        int cantidad = 0;
        int existe = 0;
        int i;
        struct tfruteria frut;
       
        if ((loog = fopen("log.txt", "a+")) == NULL){
        printf ("Error en obertura del fitxer per a lectura.\n");
        }
       
        printf ("Dame el nombre del fichero: ");
        scanf ("%s", fichero);
       
        cmp = fopen (fichero, "r");
        if (!cmp){
        cmp = fopen("compras00.txt", "r");           
        printf ("No existe el archivo se cogera el archivo por defecto\n");
        fscanf (cmp, "%s  %d", fruta, &cantidad);
        fclose (cmp);
           
           if ((dat = fopen("fruites.dat", "rb+")) == NULL){
            } else{
            fflush(stdin);
            rewind(dat);
            fread (&frut, Mida, 1, dat);
            i=1;
            while (!feof(dat)){
                  if(strcmp(fruta,frut.nom)==0){
                       printf ("La fruta existe!!\n");             
                       existe ++;
                       fprintf(loog,"Compra;%d;OK;%d;%d;%d\n",i,frut.quantitat, cantidad, frut.quantitat+cantidad);
                       fclose (loog); 
                       frut.quantitat=frut.quantitat+cantidad;
                       printf ("Ahora el estoc de %s es de: %d", frut.nom, frut.quantitat);
                       } //if si fruta existe
                       i++;
                        fread (&frut, Mida, 1, dat);
                        }//while
            if(existe == 0){
            printf ("La fruta no existe!!\n");   
            }else if (existe == 1){
             rewind(dat);
                       if(fwrite(&frut, Mida,1, dat) == 1)       
                       printf("\n Fruita modificada!! ");     
                       }else{
                       printf("No he pogut escriure el registre al buffer del fitxer\n");
                       fclose (dat);
                       }
                       }
                                     
                    }else{
                     printf ("El fichero si que existe se realizara las opciones oportunas\n");
                    fscanf (cmp, "%s  %d", fruta, &cantidad);
        fclose (cmp);
           
           if ((dat = fopen("fruites.dat", "rb+")) == NULL){
            } else{
            fflush(stdin);
            rewind(dat);
            fread (&frut, Mida, 1, dat);
            while (!feof(dat)){
                  if(strcmp(fruta,frut.nom)==0){
                       printf ("La fruta existe!!\n");             
                       existe ++;
                       frut.quantitat=frut.quantitat+cantidad;
                       printf ("Ahora el estoc de %s es de: %d", frut.nom, frut.quantitat);
                       } //if si fruta existe
                        fread (&frut, Mida, 1, dat);
                        }//while
            if(existe == 0){
            printf ("La fruta no existe!!\n");   
            }else if (existe == 1){
           rewind(dat);
                       if(fwrite(&frut, Mida,1, dat) == 1)       
                       printf("\n Fruita modificada!! ");     
                       }else{
                       printf("No he pogut escriure el registre al buffer del fitxer\n");
                       fclose (dat);
                       }
                     }
                     }//else
                     }//funcion