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
in modo da poter utilizzare fprintf. per fare un esempio chiarificatore usando gli interi, tipo qualcosa del generecodice:FILE *file; file = fopen("testo.txt", "r+");
secondo voi va bene questo metodo o posso fare in qualche altro modo, magari più efficiente?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; }

Rispondi quotando
Esattamente come li vuoi scritti questi numeri? Con padding a 5 caratteri e separati da uno spazio? Ti basta fare: