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.
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.
Código [Seleccionar]
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