ho creato un file di testo tramite uno stream ofstream con una serie di caratteri scritti uno dietro l'altro senza spazi. vorrei invece che le lettere vengano scritte a gruppi di 5 (es: PROVA PROVA PROVA PROVA .....) separati da spazi e che le righe siano tutte della stessa grandezza e giustificate. volevo utilizzare la funzione fprintf per fare tutto questo: ma visto che la funzione accetta un puntatore a file, ho pensato di aprire nuovamente il file creato in precedenza questa volta però come
codice:
FILE *file;
   
file = fopen("testo.txt", "r+");
in modo da poter utilizzare fprintf. per fare un esempio chiarificatore usando gli interi, tipo qualcosa del genere
codice:
#include <string>
#include <iomanip>
#include <fstream>
#include <cstdio>

using namespace std;

int main()
{
    ofstream f;
    
    f.open("testo.txt");
    
    for(int i = 0; i < 21; i++)
    {
            f << i;  
            }
            
    f.close();
    
    FILE *file;
    int number;
    
    file = fopen("testo.txt", "r+"); //apro di nuovo il file creato prima
    if (file==NULL) perror ("Error opening file");
    else
    {
        do {
           number = fgetc (file);
           fprintf(file, "%-5.5i", number); //formattazione
        } while (number != EOF);
     }
     fclose(file);
     return 0;
}
secondo voi va bene questo metodo o posso fare in qualche altro modo, magari più efficiente?