Adressbuch
-
Hallo,
könnte mir jemand vieleicht helfen und sagen, was ich an dem Programm noch besser machen könnte und wieso es nicht laufen will.
Für eine Hilfe wäre ich echt Dankbar :p#include <stdio.h> #include <stdlib.h> struct { char vorname[20]; char nachname[30]; char strasse[30]; char hausnummer[5]; char plz[7]; char ort[30]; char telefonnummer[30]; char e_mail[30]; } adressen; void speichern(void) { FILE *save = fopen("adressen.dat""r+b"); if( NULL == save ) { save = fopen("adressen.dat""w+b"); if( NULL == save ) { fprintf(stderr,"Kann \"adressen.dat\" nicht öffnen!\n"); return ; } } /* Zeiger save auf das Ende der Datei setzen */ fseek(save, 0, SEEK_END); /* Schreibe eine Adresse ans Ende von "adressen.dat" */ if(fwrite(&adressen, sizeof(adressen), 1, save) != 1) { fprintf(stderr, "Fehler bei fwrite...!!!\n"); return ; } /* Gebe Zeiger wieder frei */ fclose(save); } void ausgabe(void) { FILE *output = fopen("adressen.dat""r+b"); if( NULL == output ) { fprintf(stderr,"Kann \"adressen.dat\" nicht öffnen!\n"); return ; } /* Adressen auslesen "adressen.dat" */ while(fread(&adressen, sizeof(adressen), 1, output) == 1) { printf("Vorname...........: %s",adressen.vorname); printf("Nachname..........: %s",adressen.nachname); printf("Strasse...........: %s",adressen.strasse); printf("Hausnummer........: %s",adressen.hausnummer); printf("Postleitzahl......: %s",adressen.plz); printf("Ort...............: %s",adressen.ort); printf("Telefonnummer......: %s",adressen.telefonnummer); printf("E-Mail.............: %s",adressen.e_mail); printf("\n\n"); } fclose(output); } void eingabe(void) { printf("Vorname...........:"); fgets(adressen.vorname, sizeof(adressen.vorname), stdin); printf("Nachname..........:"); fgets(adressen.nachname, sizeof(adressen.nachname),stdin); printf("Strasse...........:"); fgets(adressen.strasse, sizeof(adressen.strasse), stdin); printf("Hausnummer........:"); fgets(adressen.hausnummer,sizeof(adressen.hausnummer),stdin); printf("Postleitzahl......:"); fgets(adressen.plz, sizeof(adressen.plz), stdin); printf("Ort...............:"); fgets(adressen.ort, sizeof(adressen.ort), stdin); printf("Telefonnummer......:"); fgets(adressen.telefonnummer,sizeof(adressen.telefonnummer), stdin ); printf("E-Mail.............:"); fgets(adressen.e_mail, sizeof(adressen.e_mail), stdin); speichern(); } int main(void) { int wahl; do { printf("Was wollen Sie machen:\n\n"); printf("-1- Neuen Datensatz hinzufuegen\n"); printf("-2- Alle Datensaetze ausgeben\n"); printf("-3- Programm beenden\n\n"); printf("Ihre Auswahl : "); do { scanf("%d",&wahl); } while(getchar() != '\n'); switch(wahl) { case 1 : eingabe(); break; case 2 : ausgabe(); break; case 3 : printf("...Programm wird beendet\n"); break; default: printf(">>%d<< ???\n",wahl); } } while(wahl != 3); return 1; }
Vielen Dank schonma im Voraus
-
bring erstmal die offensichtlichen fehler in ordnung. dein code kompiliert nicht einmal.
-
c.rackwitz schrieb:
bring erstmal die offensichtlichen fehler in ordnung. dein code kompiliert nicht einmal.
Guten morgen rackwitz,
wenn du mir vieleicht sagen könntest, wo ich die Fehler gemacht habe, wäre ich dankbar. Bin nämlich noch anfängerin, aber ich werde es nochmal in ruhe durchschauen.
Über jede kleinste Hilfe würde ich mich trotzdem freuen.LG Frechdachs
-
am rande: bitte benutze die cpp-tags statt der code-tags. sieht schoener aus.
mindestens die ersten zwei fopen() produzieren compilerfehler, weil sie nur einen parameter bekommen, aber zwei verlangen. zwischen die strings gehoeren kommas, wenn es separate argumente sein sollen.
hast du ueberhaupt mal versucht, den quelltext zu kompilieren?
kompilieren heisst, quelltext in ausfuehrbare binaerform uebersetzen lassen.speichern kannst du dir mit "ab" leichter machen, weil du so das fseek sparst.
du solltest sparsamer mit globalen variablen arbeiten. als "ersatz" uebergibt man welche von funktion zu funktion und verwendet wenn noetig zeiger.
im allgemeinen gibt main eine 0 (null) zurueck, was fehlerfreie ausfuehrung anzeigt.
-
Ergänzend vielleicht noch ein Hinweis, die Dir das Antworten finden in Zukunft sehr stark erleichtern könnten
Es ist nicht an uns, Dir zu sagen wo Dein Programm fehlerhaft ist. Du solltest uns ein (kurzes) Stück Quelltext vorgeben und dabei schreiben
a) Wo ein Fehler gemeldet wurde
b) Welcher Teil sich unerwartet verhält (wenn kein Fehler gemeldet wird)Ich hoffe, das Überstezen eines Programms ist dir geläufig und auch mindestens schon einmal mit einem Hello,World-Beispiel gelungen?
-
Hallo rackwitz,
erst einmal Danke für die Hilfen. Werde es gleich mal in die Tat umsetzen.
Danke nochmal
LG Frechdachs
-
LordJaxom schrieb:
Ich hoffe, das Überstezen eines Programms ist dir geläufig und auch mindestens schon einmal mit einem Hello,World-Beispiel gelungen?
Hallo Lord,
das übersetzen ist mir geläufig...das HelloWorld habe ich am anfang machen müssen...und hatte sogar auf anhieb geklappt. Ich habe sogar schon mal einen Taschenrechner machen müssen und hat auch geklappt und habe gute Noten bekommen, obwohl ich alles selber Lernen muß ohne irgendeine Hilfe.
(Fernstudium)Es ist ja noch kein Meister vom Himmel gefallen, und jeder macht mal Fehler.. daher werde ich das nächste mal daran denken, wenn ich mal wieder ein Prob. habe...und werde sagen was der Compiler für Fehler gemeldet hat.LG Frechdachs