vi, il vaut mieux faire un truc "progressif" (sinon pour des gros fichiers tu vas te retrouver à passer la plupart du temps de l'algo à faire tes realloc()

)
Soit dit en passant que même si l'implémentation est pourrie (recopie systématique), avec un tel truc progressif le surcoût de réallocation n'augmente pas avec la taille du fichier, donc la différence sera minime. Le seul inconvénient étant l'occupation mémoire (ton buffer aura des chances d'être 2x trop gros), mais tu peux aussi faire "max = current + (current>>2) + 1000;" si tu veux vraiment économiser au maximum la mémoire

(à noter que dans ce cas là, le temps passé à réallouer sera 4x plus gros : mais il y a des chances qu'il reste très largement négligeable)