Ho provato anche mettendo la fclose e la free fuori dal ciclo for (la free libera il buffer, deve stare dentro per funzionare, credo).
Il codice io lo tengo indentato, ma copiandolo qui non si è portato dietro l'indentazione e l'ho dovuto rifare a meno...
Comunque, possibili soluzioni?
Se può servire a capire il problema, la funzione WriteOnFile è questa
codice:
void writeOnFile(string buffer, string fine, FILE *listaarticoli) {
size_t len = 0;
strcat(buffer, fine);
len = strlen(buffer);
if (len < 200)
fwrite(buffer, len, 1, listaarticoli);
else
printf("Stringa da scrivere troppo lunga");
}