char* verbinden



  • Hallo,

    ich bin dabei mir ein Programm zu schreiben, welches mir mehrere htm-Dateien für eine Bildergalerie erstellt. Das Problem is beim erstellen der Dateien soll immer eine Nummer im Dateinamen drin sein (z.B. Bild1.htm, Bild2.htm,...) und dadurch nehme ich char* um es zu realisieren, aber ich bekomme die Nummer leider nicht in den char* rein.

    Hier mein Quelltext

    void dateiSchreiben(string titel) {
    char buff[80];
        int anzahl = 10;
        char* dateiname;
        for (int zaehler=1; zaehler<=anzahl; zaehler++) {
          dateiname = "C:/Bild" + zaehler + ".htm"; // hier liegt der Fehler
    //    char* dateiname = "C:/Bild.htm";
    	ofstream outfile(dateiname);
    	if (outfile.good())
            outfile << titel << endl;
    		for (int i = 0; i <= 10; i++)
    			outfile << "Das ist Zeile #" << (i + 1) << endl;
    	outfile.close();
        }
    

    Für jedes bißchen Hilfe bin ich dankbar!
    Sascha



  • char* ein pointer auf ein char. Du kannst keine int-Größen addieren.
    Ich würde es so machen:

    stringstream dateiname;
    for(int zaehler=1; zaehler<anzahl; zaehler++){
        dateiname <<"C:/Bild" <<zaehler <<".htm"
    }
    ofstream outfile(dateiname.str().c_str());
    //...
    


  • mit sprintf..

    #include <stdio.h>
    
    .
    .
    .
    
    void dateiSchreiben(string titel) 
    {
        char buff[80];
        int anzahl = 10;
        char dateiname[255]; //es muss genug Platz sein :)
        for (int zaehler=1; zaehler<=anzahl; zaehler++) 
        {
          //die stdio.h muss eingebunden werden
          sprintf( dateiname, "C:/Bild%d.htm", zaehler );
    
          ofstream outfile(dateiname);
    
          if (outfile.good())
          {
            outfile << titel << endl;
    
            for (int i = 0; i <= 10; i++)
              outfile << "Das ist Zeile #" << (i + 1) << endl;
          }
          outfile.close();
        }
    }
    

    Hoffe ich konnte helfen.

    PS: die Klammersetzung der "outfile.good()" abfrage war falsch..

    Steffen


Anmelden zum Antworten