feste datei zuweisen("if" auffordung aus faq wird nicht genommen)



  • hallo

    ich habe es auch schon mit der faq probiet,aber es will nicht

    ich habe folgendes problem

    ifstream* openFile()
    {
        ifstream* pFileStream = 0;
        for(;;)
        {
            // die Datei ?fnen, die der Benutzer angegeben hat
            char FileName[80];
            cout << "Geben Sie den Namen einer/n "
                 << "Datei mit Ganzzahlen ein:/n" 
                 << endl;
            cin >> FileName =  ;
    
            // Datei zum Lesen ?fnen;
            // die Datei nicht erstellen,
            // falls sie nicht existiert
            pFileStream = new ifstream(FileName);
            if (pFileStream->good())
            {
                break;
            }
            cerr << "Die Datei " 
                 << FileName 
                 << " konnte nicht geoeffnet werden"
                 << endl;
            delete pFileStream;
        }
        return pFileStream;
    

    1.ich würde gern eine feste datei nehmen,also nicht durch eingabe.
    am ende soll datei in buffer gelegt und angezeit werden.
    2. die zeilen zählen würde auch gern und anzeigen lassen.

    danke für eure hilfe



  • Nachdem ich deinen Beitrag zu Lesen/Verstehen versucht hab, komm ich zu der
    Erkenntnis das Deutsch offentsichlich nicht deine Muttersprache ist.
    Daher meine Empfehlung, schreib ruhig auf Englisch das verstehen die meisten
    hier gut genug um dir antworten zu können.



  • ich habe nur noch begriffe im kopf 😕



  • also ich wollte eine datei ohne eingabe wieder aus geben habe auch schon viele code´s die die mich interssieren gefunden aber es wird immer bei if abgebrochen
    wie bei der faq.wo ist mein fehler?
    ich habs unter linux und windows schon probiert:(
    also der code aus der faq

    #include <iostream> 
    #include <fstream>    //ofstream and ifstream are defined in fstream.h 
    using namespace std; 
    // Einen Person-Datensatz definieren 
    struct PERSON 
    { 
        char VorName[20]; 
        char NachName[20]; 
        int TelNr; 
    }; 
    
    // fstream damit die Datei zuerst schreibend und dann lesend ge?fnet werden kann. 
    fstream File("Person.dat", ios::out|ios::binary); 
    if (File.is_open()) 
    { 
        // Nur zwei Datens?ze schreiben. 
        // Hier w?e eine Fehlerprfung angebracht 
        for (int i = 0; i < 2 ; ++i) 
        { 
            PERSON Pers; 
            cout << "Vorname: "; 
            cin >> Pers.VorName; 
            cout << "Nachname: "; 
            cin >> Pers.NachName; 
            cout << "TelNr: "; 
            cin >> Pers.TelNr; 
    
            // Aktuelle Person in der Datei speichern. 
            File.write((const char*)&Pers, sizeof(Pers)); 
        } 
        File.close();   // Datei schlie?n 
    } 
    // Datei zum Lesen ?fnen. 
    File.open("Person.dat", ios::in|ios::binary); 
    if (File.is_open()) 
    { 
        PERSON Pers; 
        while (File.read((char*)&Pers, sizeof(Pers))) 
            cout << Pers.VorName << " " << Pers.NachName << " " << Pers.TelNr << endl; 
    }
    

    und diese meldung kommt immer

    test2.cpp:14: error: syntax error before if' test2.cpp:18: error: syntax error before;' token
    test2.cpp:21: error: syntax error before <<' token test2.cpp:22: error: syntax error before>>' token
    test2.cpp:23: error: syntax error before <<' token test2.cpp:24: error: syntax error before>>' token
    test2.cpp:25: error: syntax error before <<' token test2.cpp:26: error: syntax error before>>' token
    test2.cpp:29: error: syntax error before .' token test2.cpp:31: error: syntax error before.' token
    test2.cpp:34: error: syntax error before `.' token



  • Also, wenn du den Code genauso wie er da steht compilieren willst dann fehlt noch irgendwas und wenn du nicht weist was dann sollteste vielleicht erstmal C(++) lernen



  • 1. Dir fehlt die main()-Funktion

    // 2. Böse, hier wird keine Bereichsprüfung vorgenommen
    cin >> Pers.VorName;
    // Besser so:
    cin.getline(Pers.Vorname,20); // btw wieso schreibst du "VorName"?
    
    // 3. Okay, aber...
    File.write((const char*)&Pers, sizeof(Pers));
    // ... lieber C++-Casts verwenden (Frage: reicht hier auch static_cast? hmm
    File.write(reinterpret_cast<const char*>(&Pers),sizeof(Pers));
    

    Ansonsten ist es noch usus Variablennamen klein zu schreiben. Aber das sei deine Sache.

    MfG SideWinder


Anmelden zum Antworten