000
08.11.2004, 11:03 Uhr
~c_neuling
Gast
|
Hallo,
ich habe meine Programm schon auf verschiedenste Weisen umgeschrieben, aber bekomme bei der Ausgabe der eingelesenen Datensätze immer diesen Fehler:
Struct5_3.exe - Fehler in Anwendung Die Anweisung in "0x00405f9c" verweist auf den Speicher in "0x00000028". Der Vorgang "read" konnte nicht auf dem Speicher durchgeführt werden.
Es wäre super nett wenn mir jemand sagen könnte wo der Fehler im Programm liegt! Vielen Dank!
Hier der Programm code:
C++: |
# include <stdio.h> # include <stdlib.h>
typedef struct { char telefon[20]; char handy[20]; char email[40]; }ECOM;
typedef struct kontaktdaten { char name[40]; char vorname[40]; char strasse[40]; char hausnummer[10]; char plz[7]; char ort[30];
ECOM ecom;
struct kontaktdaten *next; } KONTAKTDATEN; KONTAKTDATEN* eingabe(KONTAKTDATEN*); void ausgabe(KONTAKTDATEN*); void main(){ //Main-Funktion mit Aufruf der Unterfunktionen
KONTAKTDATEN *point = NULL; point = eingabe(point); ausgabe(point);
} KONTAKTDATEN* eingabe (KONTAKTDATEN* wurzel) { //Funktion zum Einlesen der Daten KONTAKTDATEN *p = NULL;
p = wurzel;
static char neu; //static int schleife = 0; p = (KONTAKTDATEN*) malloc(sizeof(KONTAKTDATEN));
for (int i =0;i < 20;i++) {
//a->next = NULL; fflush(stdin);
printf("Bitte Nachname eingeben\n"); gets (p->name); printf("Bitte Vorname eingeben\n"); gets (p->vorname); printf("Bitte Strasse eingeben\n"); gets (p->strasse); printf("Bitte Hausnummer eingeben\n"); gets (p->hausnummer); printf("Bitte Postleitzahl eingeben\n"); gets (p->plz); printf("Bitte Ort eingeben\n"); gets (p->ort);
printf("Bitte Telefon-Nummer eingeben\n"); gets (p->ecom.telefon); printf("Bitte Handy-Nummer eingeben\n"); gets (p->ecom.handy); printf("Bitte E-Mail-Adresse eingeben\n"); gets (p->ecom.email);
printf("\n\nSie haben %d/20 Datensaetzen eingelesen.\nWeiteren Datensatz einlesen? <j> / <n>\n",i); scanf("%c",&neu); printf("\n");
if (neu == 'n') {break;}
p->next = (KONTAKTDATEN*) malloc(sizeof(KONTAKTDATEN));
p=p->next; }
return wurzel; } void ausgabe (KONTAKTDATEN *b) //Funktion zur Ausgabe der Daten { static int nr=0; nr++;
printf("\nDatensatz Nr.: %d\n",nr); printf ("\n%s %s\n%s %s\n%s %s\n\nTel.: %s\nHandy: %s\n\nE-Mail: %s\n\n", b->vorname,b->name,b->strasse,b->hausnummer, b->plz,b->ort,b->ecom.telefon,b->ecom.handy,b->ecom.email); if (b->next != NULL) { ausgabe(b->next); } }
|
|