Creazione file progressivi

di il
7 risposte

Creazione file progressivi

Ho bisogno di ottenere in output N file nominati in maniera progressiva (file1.txt, file2.txt,......fileN.txt); ho scritto un codice di prova con N=3 che in output mi da 3 file distinti ma nominati tutti file.txt.

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
	char f[20]={'P','r','o','v','a'};
	int n=3;
	for(int I=0; I<n; I++)
	{	
		f[5]=I+1; f[6]='.'; f[7]='t'; f[8]='x'; f[9]='t';
		
		ofstream prova (f);
		prova<<"file\t"<<I;
		prova.close();
	}
	return 0;
}
Dove ho sbagliato?

7 Risposte

  • Re: Creazione file progressivi

    Come puoi dire che ottieni 3 file con lo stesso nome, come lo hai verificato?
    Ad ogni modo, per comporre il nome del file puoi fare:
    sprintf(f,"file%d.txt", I);
  • Re: Creazione file progressivi

    Magari pure un %.08d
  • Re: Creazione file progressivi

    candaluar ha scritto:


    Come puoi dire che ottieni 3 file con lo stesso nome, come lo hai verificato?
    Ad ogni modo, per comporre il nome del file puoi fare:
    sprintf(f,"file%d.txt", I);
    Grazie per la risposta
    Ho fatto girare il codice e il risultato sono tre file con nomi identici, sembrava strano anche a me.
    Comunque con il codice che hai scritto mi da segmentation fault
  • Re: Creazione file progressivi

    Ho fatto girare il codice e il risultato sono tre file con nomi identici, sembrava strano anche a me.
    Come fai ad avere 3 file con lo stesso nome, nella stessa directory? Stai lavorando con il Commodore 64 ?
    Comunque con il codice che hai scritto mi da segmentation fault
    Posta il nuovo codice
  • Re: Creazione file progressivi

    In C++
    
    #include <iostream>
    #include <fstream>
    #include <sstream> 
    #include <string>
    
    using namespace std;
    
    int main()
    {
       int n=3;
       for(int i=0; i<n; i++)
       {   
    	  ostringstream f;
    	  f << "Prova" << i+1 << ".txt";
    
          ofstream prova (f.str());
    	  prova << "file\t" << i+1;
          prova.close();
       }
       return 0;
    }

    P.S. Ti sembra di avere file con lo stesso nome perché crei file con un carattere diverso 1 2 3 ... che non puoi vedere in quanto binario, non ASCII.
    Questo (comunque assurdo) codice funziona se scrivi f[5]=I+1+'0';

    P.P.S. Il codice di candaluar ovviamente funziona, hai sbagliato qualcosa ...
  • Re: Creazione file progressivi

    oregon ha scritto:


    In C++

    P.S. Ti sembra di avere file con lo stesso nome perché crei file con un carattere diverso 1 2 3 ... che non puoi vedere in quanto binario, non ASCII.
    Questo (comunque assurdo) codice funziona se scrivi f[5]=I+1+'0';

    Grazie, il codice che mi hai suggerito funziona (ovviamente), purtroppo non ho dimistichezza con le stringhe e il tipo char non avendone mai avuto bisogno.
    Potresti spiegarmi perché scrivendo f[5]=I+1+'0'; il codice funziona?
  • Re: Creazione file progressivi

    Te l'ho detto prima ... devi studiare la differenza tra valore in binario e ASCII...
Devi accedere o registrarti per scrivere nel forum
7 risposte