ca plante pcq tu recharges un handle de fichier à chaque écriture.
#include <iostream.h>
#include <stdio.h>
#define NAME_FILE fopen("output.txt", "a")
int main()
{
FILE *f;
f=fopen("output.txt", "r");
fprintf(f, "");//vide le fichier de sortie
fclose(f);
f=fopen("output.txt", "a");
for (int i=0;i<1000;i++)
{
fprintf(f, "hello\n");
//fflush(f);
}
fclose(f);
cout << "\ntest reussi\n";
}
si tu développes ta macro, tu as un fopen chaque fois que tu fais un accès fichier. Tu ouvres donc le fichier chaque fois, sans le fermer. Ca plante pcq ca bouffe trop de mémoire, et/ou pcq tu peux pas ouvrir plusieurs fois le même fichier.
Il faut ouvrir le fichier, stocker son handle (FILE *f) et utiliser la variable à chaque fois.
à la fin, tu fermes ton handle
l'instruction fclose(NAME_FILE); se dvp en:
fclose(fopen("file.ext","a"));
cela ne sert carrément à rien. si c'était optimisé, ca ferait un NOP vu que tu fermes ce que tu viens d'ouvrir.
Et entre nous, t'as pas besoin du c++ pour faire ca, vu que tu utilises fprintf:
ton cout << "texte" pourrait être remplacé par printf("\ntest réussi\n"); ou par fprintf(stdout,"\ntest réussi\n");
255 fois? pcq fopen peut ouvrir 255 fichiers avant de planter!