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
-
psst, geheim: Dateien öffnen und schreiben
-
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.