Problem mit Winexec und keine Lösung gefunden!



  • @LowFly:
    Nix da string.h - nur string - die Header in C++ sind ohne Endung!.



  • LowFly schrieb:

    [und noch ein Edit]
    mit

    i < inhalt.lenght();
    

    verlierst du den letzten karakter in deiner zeichenfolge. richtig wäre

    i <= inhalt.lenght();
    

    Nein, Kleiner ist an der Stelle schon richtig - Arrays in C und C++ sind null-basiert, d.h. das letzte Element ist bei Index "Länge-1".



  • @CStoll
    aber die länge einer zeichenfolge (ich weis das dies eine array ist) wird mir doch immer ohne die null terminierung zurück gegeben. siehe strlen()!

    oder hab ich da bisher was verpasst?



  • LowFly schrieb:

    @CStoll
    aber die länge einer zeichenfolge (ich weis das dies eine array ist) wird mir doch immer ohne die null terminierung zurück gegeben. siehe strlen()!

    oder hab ich da bisher was verpasst?

    Ja, size() bzw. length() gibt die Anzahl Zeichen ohne Null- Terminierung zurück. In einem std::string ist aber

    std::string s;
    char c = s[s.size()];
    

    nicht definiert. Es gibt ganz einfach keine Null- Terminierung.

    Nur bei der Member- Funktion c_str() ist ein Null-Terminierter C-String garantiert.



  • Also, da ich bisher nichts verstanden habe, wovon alle gesprochen haben, ausser das ich mich total doof verschrieben habe!
    Nun habe ich den blöden Tippfehler entfernt und es läuft, er ruft die entsprechende Datei nur eben nicht auf um sie zu ändern, Tipps?

    Quelldatei:
    fstream datei;
    string inhalt = "Der Inhalt für die Info-Datei!";

    datei.open("Info.txt", ios::out);

    for(int i = 0; i < inhalt.length(); i++)
    {
    datei.write((char*)&inhalt[i], sizeof(char));
    }

    datei.close();
    }



  • fstream::open verlangt nach einer pfadangabe.

    wenn du schreibst

    datei.open("Info.txt", ...);
    

    MUSS die datei Info.txt im selben ordner liegen aus dem dein prog. gestartet wird.
    wenn das nicht der fall ist, findet fstearm deine datei nicht. wenn deine datei die du öffnen willst in einem anderen ordner bzw. laufwerk liegt, must du die pfadangabe anpassen.



  • Ok,
    habe nun nun einen Dateipfad angegeben, doch wenn ich nun die entsprechende Funktion ausführen will, tut sich nichts..

    Was muss ich noch ändern?

    [/cpp]fstream datei;
    string inhalt = "Der Inhalt für die Info-Datei!";

    datei.open("C:\\Users\\Max Hütten\\Desktop\\Minecraft\.minecraft\\Info.txt", ios::out);

    for(int i = 0; i < inhalt.length(); i++)
    {
    datei.write((char*)&inhalt[i], sizeof(char));
    }

    datei.close();
    }



  • lies dir das mal bitte durch...
    http://msdn.microsoft.com/en-us/library/aa651613



  • Gar keine Ahnung was du mir damit sagen willst!

    Wie schon gesagt:

    <----Keine Ahnung!!!



  • Gar keine Ahnung was du mir damit sagen willst!

    das du selber mal dein gehirn anstrengen sollst.
    programmieren heist nachdenken und nicht das handtuch schmeisen und sich alles vorkauen lassen.

    unter dem link steht alles was du brauchst um eine neue datei zu erstellen, aus einer datei zu lesen in sie zu schreiben, oder text in einer beschriebenen datei anzuhängen.
    du willst in eine datei schreiben! öffnest aber die datei mit ios::out.
    mehr anhaltspunkte gibts jetzt nicht mehr. wenn du jetzt nicht in der lage bist deinen fehler selber zu finden hast du pech gehabt.

    programmieren geht auch nicht ohne try & error. fals dir das was sagt. und wenn dein englisch nicht so gut ist, zieh nen übersetzer zu hilfe.


Anmelden zum Antworten