C++ Datei wird nicht erstellt



  • Moin,

    es soll ein Wort eigegeben werden und dieses in einer Datei gespeichert werden. Anschließend soll gefragt werden, ob Eingabe überarbeitet werden soll, falls ja soll das alte Wort überschrieben werden. Läuft auch durch, die Datei wird aber nicht erstellt. Kann jmd helfen?

    #include "stdafx.h"
    #include<iostream>
    #include<fstream>
    #include<string>

    using namespace std;

    int main()
    {
    fstream file;
    string wort;
    string wortNeu;
    int x = 0;

    cout << "Geben Sie das Wort ein:" << endl;
    cin >> wort;

    file.open("C:\\beispiel.txt", ios::out);
    if (file.is_open())
    {
    file << wort;
    file.close();
    }

    cout << "Möchten Sie das Wort überarbeiten? (Ja=1; Nein=2)" << endl;
    cin >> x;

    if (x==1)
    {

    cout << "Geben Sie das neue Wort ein:" << endl;
    cin >> wortNeu;

    file.open("C:\\beispiel.txt", ios::trunc);
    file << wortNeu;
    file.close();
    }

    return 0;
    }

    Liebe Grüße



  • Vermutlich ne Zugriffsverletzung.

    Und std::ios::trunc musst du nicht angeben.

    Und beim zweiten Öffnen der Datei vergisst du auf is_open() zu prüfen. Und muss in die erste Abzweigung rein.

    Und benutze ofstream .

    Und benutze nächstes Mal Code-Tags.



  • Benutze std::ios::out statt nur trunc



  • Hast du denn Schreibzugriff auf C:\ ?



  • Versuch mal das auf "C:/Users/<Benutzer>/". Sowas legt man doch nicht auf C:/ ab. Vorkompilierte header würde ich erstmal weg lassen (leeres Projekt).

    So sollte es dann funktionieren (nur mal ein Vorschlag, kann man auf 100 verschiedene Weisen machen):

    #include<iostream>
    #include<fstream>
    #include<string>
    
    using std::cin;
    using std::cout;
    
    int main()
    {
        std::string word;  // das Wort, welches eingelesen wird
        int x = 1;   // Variable, um die Abbruchbedingung zu pruefen
        do {
            cout << "Geben Sie das Wort ein: ";
            if (cin >> word)  // bei Eingabe von o.a. EOF soll die Ausgabe unten nicht passieren
            {
                cout << "Moechten Sie das Wort ueberarbeiten? (Ja=1; Nein=2)\n";
            }
        } while (cin >> x && x == 1);  // Der benutzer muss eine 1 eingeben, damit die Schleife weiter laeuft
    
        std::ofstream file("C:/Users/<Benutzer>/beispiel.txt");  // ctor oeffnet intern gleich die Datei
        if (!file) 
        {
            std::cerr << "Fehler beim oeffnen der Datei!\n";
            return 1;
        }
        file << word;
    
        return 0;
    } // implizit file.close() durch dtor
    

    Mangel wäre o.a. dass man nur ein Wort eingeben kann, und das Programm nicht den Rest der Eingabe ignoriert, nachdem es ein Wort gelesen hat.


Anmelden zum Antworten