C Mehrere Dateien mit Schleife erstellen?



  • http://www.cplusplus.com/reference/clibrary/cstdio/sprintf.html

    Damit einen string zusammenbauen und dann erst fopen mit diesem string aufrufen.

    In C++ geht das so:

    ...
    int i = 2;
    std::stringstream str;
    str << "blabla" << i << "mehr_blabla..";
    std::ofstream out ( str.str().c_str());
    ...
    


  • Ok, das ist eindeutig höher als wie weit ich bis jetzt in die Materie eingestiegen bin... Da muss ich jetzt erstmal die einzelnen Befehle verstehen.



  • Adrium schrieb:

    Sry, ist ANSI C dasselbe wie C ? Wenn ja, das wusste ich nicht.

    Selbst wenn nicht, wäre ANSI C++ jedenfalls noch weniger C als ANSI C.

    ANSI steht für ein Standardisierungskomitee; ANSI C wird Synonym für den C-Standard verwendet, ebenso wie ANSI C++ für den C++ Standard steht.



  • Aber bei Wikipedia steht das so:

    1.
          #include <stdio.h>
          int main (void)
          {
            FILE *datei;
            datei = fopen ("testdatei.txt", "w");
            if (datei != NULL)
              {
                fprintf (datei, "Hallo, Welt\n");
                fclose (datei);
              }
            return 0;
          }
    

    Wieso ist das bei dir, drakon, so anders? bzw wieso kann ich nicht einfach das von wikipedia in ne schleife packen?



  • Weil das C ist. 😉 - Und ich C++ benutzt habe. 😉

    Aber auch das Beispiel von Wikipedia gibt dir keine aufsteigende Nummer..

    Wie gesagt, wenn du C willst, dann kommst du nicht drum herum das ganz in einen anderen Buffer zu schieben:

    char[32] data;
    int i = 2;
    sprintf (data,"blabla_%d.txt" ,i);
    FILE* f = fopen (data , "w");
    ...
    


  • a) du schließt die Datei nicht in der Schleife
    b) du versuchst sie dennoch erneut zu öffnen, was nicht geht, da sie durch das vorherige Öffnen mit "w" gelockt ist
    c) dein Versuch mit %d ist die Syntax von printf und Konsorten und hat nichts mit fopen zu tun.

    usw usf

    du vermixt da einfach eine Menge



  • OK, dann muss ich jetzt wohl lernen, wie ich was in einen anderen Buffer schiebt ^^

    Aber vielen Dank, für die schnelle und ausführliche Hilfe, nicht wie in manchen Foren, wo man erstmal angezickt wird, nur weil man Anfänger ist 🙂



  • Adrium schrieb:

    OK, dann muss ich jetzt wohl lernen, wie ich was in einen anderen Buffer schiebt ^^

    Aber vielen Dank, für die schnelle und ausführliche Hilfe, nicht wie in manchen Foren, wo man erstmal angezickt wird, nur weil man Anfänger ist 🙂

    Aber ab jetzt bitte mit den C-spezifischen Fragen ins C-Forum. 😉



  • drakon schrieb:

    http://www.cplusplus.com/reference/clibrary/cstdio/sprintf.html

    Damit einen string zusammenbauen und dann erst fopen mit diesem string aufrufen.

    In C++ geht das so:

    ...
    int i = 2;
    std::stringstream str;
    str << "blabla" << i << "mehr_blabla..";
    std::ofstream out ( str.str().c_str());
    ...
    

    Hallo,

    stehe vor dem selben Problem wie Adrium, nur gibt mir mein Kompiler folgende Fehlermeldung beim Kompilieren aus:
    error C2297: '<<': Ungültig, da der rechte Operand vom Typ 'const char [7]' ist
    error C2297: '<<': Ungültig, da der rechte Operand vom Typ 'const char [5]' ist
    warning C4552: '<<': Operator hat keine Auswirkungen; Operator mit Nebeneffekt erwartet

    Die Fehler gelten alle für die Zeile 4 im obigen Listing. Was tun damit der das frisst?



  • #include <sstream>
    ...
    


  • super sache, besten dank


Anmelden zum Antworten