En realidad el problema está al mostrar, no al escribir por que no estás revisando el resultado de fread().Código: C if (fread(&buff2, sizeof(categoria), 1, fp)) printf ("|t %d t|t %0.2f t|n", buff2.cat, buff2.total);
Estoy usando Borland 5.5 para compilar. Segund lei feof() no es presiso, es decir, puede devolver "true" aunque no este en el final del archivo, otra posibilidad seria, ir al final del archivo con fseek(pf, 0l, 2) y hacer un fell() para sacar la posicion del ultimo byte y asi vlaerse de este valor y no de feof() :S