Dateihandling



  • Hallo,

    kann mir jemand bitte das Dateihandling in C erklären ?
    Habe das bisher nur mit den streams (fstream etc.) gemacht.
    Brauche aber das Dateihandling unter C.

    Was heißt z.b.
    fwrite(&Esatz,sizeof(Esatz),1,Datei)
    die 1 ?

    Wäre nett wenn sich jemand findet der mir das für
    schreiben,lesen und ändern des Dateiinhaltes etc. erklärt.

    ciao, c-mos





  • Hallo,
    danke für den Link.
    Kannst mir bitte folgendes erläutern ?

    struct Satz
    {
        char cNachname[13];
        char cVorname[13];
        char cTelefon[14];
    };//Esatz
    ...
    ...
    ...
    
    void ausgabe(Satz Esatz)
    {
            cout<<"\nName : "<<Esatz.cNachname<<endl;
            cout<<"Vorname :"<<Esatz.cVorname<<endl;
            cout<<"Telefon-Nummer :"<<Esatz.cTelefon<<endl;
            cout<<"Weiter mit beliebiger Taste!"<<endl;
    
            getch();
    }
    
    void lesen(FILE *Datei)
    {
        long Pos;
        struct Satz Esatz;
    
        Datei = fopen("Telefon.dat","r");
        if (Datei == NULL) 
        {
            cout<<"Fehler beim Oeffnen der Datei"<<endl;
                getch();
        }
        else
        {
    
            cout<<"Datei erfolgreich geoeffnet"<<endl;
            getch();
    
            fread(&Esatz,sizeof(Esatz),1,Datei);
    
                while(!feof (Datei))
                {
                    ausgabe(Esatz);
                    Pos = ftell (Datei);
                    cout<<"aktuellePosition:"<<Pos<<endl;
    
                    fread(&Esatz,sizeof(Esatz),1,Datei);
                }
            cout<<"\n_______________________________________________\n";
    
            fclose(Datei);//Datei schliessen
        }
    
    }
    
    void suchen(FILE *Datei)
    {
        char cSuchName[13], cTaste;
        struct Satz Esatz;
        bool OK=1;
        long Pos;
    
        Datei = fopen("Telefon.dat","r+b");
            if (Datei == NULL) 
            {
                cout<<"Fehler beim Oeffnen der Datei"<<endl;
                    getch();
            }
                else
                {
    
                    cout<<"\nName ? : ";
                    cin>>cSuchName;
                    fread(&Esatz,sizeof(Esatz),1,Datei);
    
                    while(!feof (Datei))
                    {
                        if (!strcmp(Esatz.cNachname,cSuchName))
                        {
                            ausgabe(Esatz);
                            OK=0;
                            Pos = ftell (Datei)-sizeof(Esatz);
                            cout<<"Position des gesuchten Datensatzes :"<<Pos<<endl;
                            cout<<"Datensatz aendern? ? ";
                            cin>>cTaste;
                            cTaste=toupper(cTaste);// in Großbuchstaben
                            if (cTaste=='J')
                            {
    
                                cout<<"Name : ";
                                cin>>Esatz.cNachname;
                                cout<<"Vorname : ";
                                cin>>Esatz.cVorname;
                                cout<<"Telefonnummer : ";
                                cin>>Esatz.cTelefon;
                                fseek (Datei, Pos, SEEK_SET);
                                fwrite(&Esatz,sizeof(Esatz),1,Datei);
                                fseek (Datei,/* Pos+sizeof(Esatz)*/ftell(Datei), SEEK_SET);
    
                            }
    
                        }
    
                    fread(&Esatz,sizeof(Esatz),1,Datei);
                    }
                    fclose(Datei);
                    if (OK) cout<<"Keinen passenden Datensatz gefunden!\n"<<endl;
                }
    
    }
    

    Ich verstehe nicht genau wie dieser Code einen kompletten Datensatz einließt ?
    Wie ist das da mit der Struktur ?
    Vor allem die 2 Funktionen ausgabe und suchen, dort steige ich nicht ganz
    dahinter.
    Bis nacher 🙂



  • Öhm...
    kleiner Tipp schau mal hier unter Tutorials,
    da gibts einiges Deutsches, was du wie ein Einsteiger Buch lesen kannst.
    Da ist dann auch Dateihandeling erklärt.


Anmelden zum Antworten