Questo è il codice che avevi postato, dicendo che aveva problemi.
while ( !in.eof() ){
rowNumber++;
in.getline(buffer, 200);
sprintf (buffer, "%03d %s\n", rowNumber);
printf ("%03d %s\n", rowNumber, buffer);
f << buffer << endl;
}
Attenendomi semplicemente a questo codice, ho notato questo:
1) leggi dal file e metti la riga letta in una stringa chiamata buffer ( prima era row (come scrive oregon) )
2) usando la sprintf metti nella stessa stringa buffer un numero intero (secondo il formato %03d %s\n" (tra l'altro errato, perchè manca la stringa)); così facendo sovrascrivi il cotenuto di buffer.
Tutto qui!
Il tuo row è il bufferUno ... bastava buffer ... il \n non ci vuole nella sprintf ...
Attenendomi al suo codice ho suggerito un bufferUno, proprio perchè aveva usato buffer e non più row.
Certo la sprintf non ha bisogno di "\n", onestamente non ci ho immediatamente fatto caso, ma cut and paste. Ad ogni modo il "\n" è comunque un carattere, che sarà inserito in buffer prima di \0, esso sortirà l'effetto di un doppio a capo, sgradito o no dipende dalla formattazione che vuole avere.
Spero aver chiarito in maniera esaustiva!