Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » "Fehler in Anwendung" Speicherfehler, HILFE

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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);

}
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.11.2004, 12:34 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ich würde mal sagen das es in der ausgabe kracht, da du in der eingabe einen fehler gemacht hast:


pseudo-code:

-> wurzel = NULL, p = NULL
p = wurzel;
-> p = NULL
p = malloc(...)
-> p = struct, wurzel = NULL



du solltest

vor


C++:
for (int i =0;i < 20;i++)




C++:
wurzel = p;



schreiben, dann stimmt deine funktion, das


C++:
p = wurzel;



am anfang kannst du "wegschmeissen"
--
class God : public ChuckNorris { };

Dieser Post wurde am 08.11.2004 um 12:35 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.11.2004, 14:25 Uhr
~c_neuling
Gast


Wunderbar

Ein zweiter Fehler war noch, dass ich "a->next = NULL;" auskommentiert hatte.
Vorher wurde mir gesagt, dass die Zeile überflüssig sein, aber dadurch wollte der Compiler einen Datensatz auslesen den es gar nicht mehr gab...

Vielen Dank!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: