Einfaches C++ Script für Kommentardateien



  • Hallo!

    Ich bin noch neu bei C++ und deshalb ist meine Frage/Problem bestimmt leicht zu lösen. Also ich will ein Programm machen, dass folgenden Sinn hat:

    Wenn man es Startet, dann wird man in einem DOS Fenster aufgefordert sein Kommentar zu schreiben und wenn man das gemacht hat, muss man mit Enter bestätigen. Dann soll im Fenster stehen das wenn es geklappt hat, alles gut gegangen ist und wenn es nicht geklappt hat, soll dann halt stehen, dass es nicht geklappt hat. WAS klappen soll ist: Der Text den man in dieses DOS Fenster reingeschrieben hat, soll auf den Destkop als Kommentar1.txt gespeichert werden. Wenn man das Programm wieder aufruft, passiert genau das gleiche, nur dass das Programm diesmal die Datei als Kommentar2.txt abspeichert und das geht dann unendlich so weiter ^^

    Hier mein Script

    #include <iostream>
    #include <fstream>
    
    int main()
    {
    	std::ofstream KommentarDatei;
    	char Satz[100];
    
    	std::cout << "Dein Kommentar (maximal 100 Buchstaben lang!) ----> ";
    	std::cin  >> "Satz";
    
    	Satz.open("Kommentar.txt");
    	if (!Satz)
    	{
    		std::cout << "Dein Kommentar konnte nicht erstellt werden.\n";
    		exit(1);
    	}
    
    	std::cout << "Der Kommentar wurde erstellt! :D\n";
    
    	Satz.close();
    
    	return 0;
    }
    

    Jaja.. ich weiß ich bin noch seeeehhhhr weit von meinem Ziel entfernt..

    Danke im Vor raus! (Das Wort wird zensiert warum auch immer ^^)

    MfG Darthshoot!



  • Darthshoot2 😑 schrieb:

    Hallo!
    Danke im Vor raus! (Das Wort wird zensiert warum auch immer ^^)

    Wieso, voraus geht doch 🙂 Man muss es nur richtig schreiben 😃

    Außerdem bist im falschen Forum, des ist normales Standard C++ was du hast und kein C++/CLI.



  • Jo sorry ich war mir net sicher wohin mit meiner Frage xD kannste mir nochma genau sagen in welches Forum?



  • Hmmm ich habe es geschaft die Errors rauszubekommen, aber das Script Speichert garnichts.

    #include <iostream>
    #include <fstream>
    
    int main()
    {
    	std::ofstream KommentarDatei;
    	char Satz[100];
    
    	std::cout << "Dein Kommentar (maximal 100 Buchstaben lang!) ----> ";
    	std::cin  >> "Satz";
    
    	KommentarDatei.open("Kommentar.txt");
    	if (!KommentarDatei)
    	{
    		std::cout << "Dein Kommentar konnte nicht erstellt werden.\n";
    		exit(1);
    	}
    
    	std::cout << "Der Kommentar wurde erstellt! :D\n";
    
    	KommentarDatei.close();
    
    	return 0;
    }
    

    😕



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • std::cin  >> "Satz";
    

    Du lässt den Benutzer ein (nicht notwendigerweise nur vier Zeichen langes) Wort in den konstanten String "Satz" einlesen. Ein Wunder dass das Programm nicht abstürzt, wenn das Wort länger ist.

    Du deklarierst vorher die Variable Satz als Array von 100 Zeichen, jedoch liest Du weder etwas in die Variable ein, noch schreibst Du sie in die Datei. Genaugenommen öffnest und schliesst Du die Datei nur. Was soll Deiner Meinung nach danach da drin stehen? 😉

    cin >> Satz;
    KommentarDatei << Satz;
    


  • Hmm genaugenommen stürzt es auch ab xD

    Das Programm sollte so laufen:

    -Befehl zum eingeben vom Kommentar
    -Eingegebenes in neue Datei Packen
    -Datei Speichern
    -Message abgeben, dass alles erfolgreich war
    -Beenden des Programms nach 5 Sec

    -Aufm Deskop ne Kommentar.txt Datei mit dem Inhalt was man ins DOS Fenster reingeschrieben hat.

    Ich dachte mit dem cin Befehl wird der Text eingelesen und mit dem Rest verarbeitet 😕

    Wie geht's den nun?



  • Ja mit cin >> variable liest du etwas in variable ein.
    Mit cin >> "variable" jedoch nicht.

    Wie es mit Satz und cin richtig geht hab ich doch geschrieben? Und als Bonus sogar noch wie Satz in KommentarDatei gelangt.. Etwas probieren (und vor allem kapieren) musst schon selbst 😉



  • WOOHOO! 😃 Ich habs geschafft ne leere .txt Datei zu machen xD

    #include <iostream>
    #include <fstream>
    
    int main()
    {
        std::ofstream KommentarDatei;
        char Satz[100];
    
        std::cout << "Dein Kommentar (maximal 100 Buchstaben lang!) ----> ";
        std::cin  >> Satz;
    
        KommentarDatei.open("Kommentar.txt");
        if (!KommentarDatei)
        {
            std::cout << "Dein Kommentar konnte nicht erstellt werden.\n";
            exit(1);
        }
    
        std::cout << "Der Kommentar wurde erstellt! \n";
    
        KommentarDatei.close();
    
        return 0;
    }
    

    Jetzt frage ich mich nur noch warum der Satz nicht in der Datei drin steht 😕
    Ich glaube das mein Programm noch auf Zahlen eingestellt ist hmm vielleicht muss ich irgendeinen Wert konvertieren? (zu char meine ich glaube ich ^^)



  • Hallo

    du must den Wert den du über cin eingelesen hast, noch in den Dateistream schreiben.

    bis bald
    akari



  • #include <iostream>
    #include <fstream>
    
    int main()
    {
        std::ofstream KommentarDatei;
        char Satz[100];
    
        std::cout << "Dein Kommentar (maximal 100 Buchstaben lang!) ----> ";
        std::cin  >> Satz;
    
    	KommentarDatei.open(Satz, std::ios_base::in);
    
    	KommentarDatei.open("Kommentar.txt");
        if (!KommentarDatei)
        {
            std::cout << "Dein Kommentar konnte nicht erstellt werden.\n";
            exit(1);
        }
    
    	std::cout << "Der Kommentar wurde erstellt! \n";
    
    	{
    		KommentarDatei.put(Satz);
    	}
    
        KommentarDatei.close();
    
        return 0;
    }
    

    Ich hab probiert den Cin Wert in die KommentarDatei reinzubekommen mit put und ios_base, aber es geht net 😕 was ist denn nun schon wieder falsch?



  • LordJaxom schrieb:

    KommentarDatei << Satz;
    


  • Hallo

    #include <iostream>
    #include <fstream>
    
    int main()
    {
        std::ofstream KommentarDatei;
        char Satz[100];
    
        std::cout << "Dein Kommentar (maximal 100 Buchstaben lang!) ----> ";
        std::cin  >> Satz;
    
        KommentarDatei.open("Kommentar.txt", std::ios_base::in); // Hier nur Dateinamen
    
        // open brauchst du nicht mehr
        if (!KommentarDatei)
        {
            std::cout << "Dein Kommentar konnte nicht erstellt werden.\n";
            exit(1);
        }
    
        KommentarDatei << Satz; // Satz in Dtaei schreiben
    
        std::cout << "Der Kommentar wurde erstellt! \n";
    
        // close brauchst du nicht.
        return 0;
    }
    

    bis bald
    akari



  • Jo Das hatte ich schonmal gemacht aber dann wurde IF aktiv und hat hat mir immer gemeldet, dass er meinen Kommentar net erstellen konnte.

    Mein Script bis jetzt:

    #include <iostream>
    #include <fstream>
    
    int main()
    {
        std::ofstream KommentarDatei;
        char Satz[100];
    
        std::cout << "Dein Kommentar (maximal 100 Buchstaben lang!) ----> ";
        std::cin  >> Satz;
    
    	KommentarDatei << Satz;
    
    	KommentarDatei.open("Kommentar.txt");
        if (!KommentarDatei)
        {
            std::cout << "Dein Kommentar konnte nicht erstellt werden.\n";
            exit(1);
        }
    
    	std::cout << "Der Kommentar wurde erstellt! \n";
    
        KommentarDatei.close();
    
        return 0;
    }
    

    Ich denke ich habe den KommentarDatei << Satz; auch richtig positioniert.



  • Wie wärs denn damit

    #include <iostream>
    #include <fstream>
    
    int main()
    {
        char Satz[100];
    
        std::cout << "Dein Kommentar (maximal 100 Buchstaben lang!) ----> ";
        std::cin  >> Satz;
    
        std::ofstream KommentarDatei("Kommentar.txt"); // Warum war da ios::in?
        // open brauchst du nicht mehr
        if (!KommentarDatei)
        {
            std::cout << "Dein Kommentar konnte nicht erstellt werden.\n";
            exit(1);
        }
    
        KommentarDatei << Satz; // Satz in Dtaei schreiben
    
        std::cout << "Der Kommentar wurde erstellt! \n";
    
        // close brauchst du nicht.
        return 0;
    }
    


  • "geht nicht" ist ne sehr kurze Fehlerbeschreibeung 😃

    Versuch's mal nicht mit put sondern mit dem << operator.

    #include <iostream>
    #include <fstream>
    
    int main() {
        using namespace std; // erspart dir das ganze std::
    
        char Satz[100];
        cout << "Dein Kommentar (maximal 100 Buchstaben lang!) ----> ";
        cin  >> Satz;
    
        ofstream KommentarDatei("Kommentar.txt");
        // kann gleich beim erstellen geöffnet werden. in steht nicht für schreiben
        if (!KommentarDatei) {
            cout << "Dein Kommentar konnte nicht erstellt werden.\n";
            return 1; // So klappts auch.
        }
        cout << "Der Kommentar wurde erstellt!\n";
        KommentarDatei << Satz; // Damit schreibst du Satz in die Datei,
        // wie du z.B. auch einen Satz in die Konsole schreibst
        // Datei muss nicht geschlossen werden, wird automatsich gemacht
        return 0;
    }
    

    mfg.

    edit: Braunstein war schneller
    edit2: mir fällt gerade auf da warn ziemlich viele schneller. Man bin ich lahm.



  • Darthshoot2 😑 schrieb:

    Ich denke ich habe den KommentarDatei << Satz; auch richtig positioniert.

    Nein. Du solltest die Datei erst öffnen und dann schreiben.



  • Vielen Dank!! 😃

    Ich hätte da noch eine kleine Fragen und zwar wie kann ich angeben, wohin die Datei kopiert werden soll? Das kann ich ausnungsweise nicht ausprobieren, weil ich überhaupt nicht weiß wie 😕



  • Indem du den Pfad mit angibst.
    z.Bsp. so (bei Windows)

    ofstream KommentarDatei("c:\\temp\\Kommentar.txt");
    


  • FETT! DANKE 😃

    (Nebenbei kann mir mal bitte kurz einer ne möglichkeit posten wie ich in den System Volume Information Ordner rein komme? 😑 Da treiben Viren ihr unwesen und so kann ich kaum im Internet sein naja ihr wisst bestimmt warum..)

    Hmm wenn die 100 Grenze überschritten wird und man drückt Enter dann schreibt der nicht, dass es fehlgeschlagen ist, erstellt aber auch keine Datei 😮

    Ahh noch ein paar Dinge ^^

    1. Es ist doch so, wenn man z.B. ein Programm hat, dass nur eine Datei von einem Ord woanders hin kopieren soll, muss man . als "Alle Dateien" angeben, weil das Programm sonst abschmiert?
    2. wie stellt man das denn ein, dass er die alte Kommentardatei nicht überschreibt?
    3. Ganz wichtig! Wie stelle ich es ein, dass er den Kommentar aufn Desktop kopiert? Weil der hat ja bei jedem einen anderen Pfad und mit ALL.Users geht net.


Log in to reply