Arrays, Structs, Pointer und Probleme...
-
Guten Tag,
ich habe ein paar Probleme und hoffe auf Hilfe! Ich habe ein Programm geschrieben (aus mehreren Programmen zusammengebastelt
) und bekomme die letzten beiden hartnäckigen Fehler nicht weg
Des Weiteren verstehe ich einige Befehle und deren Auswirkung/Nutzen nicht ganz...
Der Code ist folgender:
/*01*/ # include <stdio.h> /*02*/ # include <stdlib.h> /*03*/ /*04*/ typedef struct kontaktdaten /*05*/ { /*06*/ char name[40]; /*07*/ char vorname[40]; /*08*/ char strasse[40]; /*09*/ char hausnummer[10]; /*10*/ char plz[7]; /*11*/ char ort[30]; /*12*/ char telefon[20]; /*13*/ char handy[20]; /*14*/ char email[40]; /*15*/ struct kontakdaten *next; /*16*/ } KONTAKTDATEN; /*17*/ /*18*/ KONTAKTDATEN* eingabe(); /*19*/ void ausgabe(KONTAKTDATEN*); /*20*/ /*21*/ /*22*/ void main(){ /*23*/ /*24*/ KONTAKTDATEN *p = NULL; /*25*/ p = eingabe(); /*26*/ ausgabe(p); /*27*/ /*28*/ /*29*/ } /*30*/ /*31*/ KONTAKTDATEN* eingabe () { /*32*/ /*33*/ KONTAKTDATEN *a = NULL; /*34*/ char neu; /*35*/ static int loop = 0; /*36*/ /*37*/ a = (KONTAKTDATEN*) malloc(sizeof(KONTAKTDATEN)); /*38*/ a->next = NULL; /*39*/ /*40*/ printf("Bitte Nachname eingeben\n"); /*41*/ gets (a->name); /*42*/ /*43*/ printf("Bitte Vorname eingeben\n"); /*44*/ gets (a->vorname); /*45*/ /*46*/ printf("Bitte Strasse eingeben\n"); /*47*/ gets (a->strasse); /*48*/ /*49*/ printf("Bitte Hausnummer eingeben\n"); /*50*/ gets (a->hausnummer); /*51*/ /*52*/ printf("Bitte Postleitzahl eingeben\n"); /*53*/ gets (a->plz); /*54*/ /*55*/ printf("Bitte Ort eingeben\n"); /*56*/ gets (a->ort); /*57*/ /*58*/ printf("Bitte Telefon-Nummer eingeben\n"); /*59*/ gets (a->telefon); /*60*/ /*61*/ printf("Bitte Handy-Nummer eingeben\n"); /*62*/ gets (a->handy); /*63*/ /*64*/ printf("Bitte E-Mail-Adresse eingeben\n\n"); /*65*/ gets (a->email); /*66*/ /*67*/ /*68*/ printf("noch einen?"); /*69*/ neu = getchar(); /*70*/ /*71*/ if ((neu != 'N') && (loop < 20)) { /*72*/ /*73*/ loop++; /*74*/ a->next = eingabe(); /*75*/ } /*76*/ else { /*77*/ printf("\nSie haben keine weitere Eingabe gewählt",loop); /*78*/ } /*79*/ /*80*/ return a; /*81*/ } /*82*/ /*83*/ void ausgabe (KONTAKTDATEN *b) /*84*/ { /*85*/ /*86*/ /*87*/ printf ("\n\n%s %s\n%s %s\n%s %s\n\nTel.: %s\nHandy: %s\n\nE-Mail: %s\n\n", /*88*/ b->vorname,b->name,b->strasse,b->hausnummer, /*89*/ b->plz,b->ort,b->telefon,b->handy,b->email); /*90*/ /*91*/ if (b->next != NULL) { /*92*/ ausgabe(b->next); /*93*/ /*94*/ } /*95*/ }
Und die Fehlermeldungen sind folgende:
C:\Programme\Microsoft Visual Studio\MyProjects\Struct\Struct3_2.cpp(74) : error C2440: '=' : 'struct kontaktdaten *' kann nicht in 'struct kontakdaten *' konvertiert werden
Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
C:\Programme\Microsoft Visual Studio\MyProjects\Struct\Struct3_2.cpp(92) : error C2664: 'ausgabe' : Konvertierung des Parameters 1 von 'struct kontakdaten *' in 'struct kontaktdaten *' nicht moeglich
Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
Fehler beim Ausführen von cl.exe.Struct3_2.obj - 2 Fehler, 0 Warnung(en)
Und die Zeilen, die ich nicht so ganz verstehe sind 24(warum p,wofür,warum =NULL?), ebenso 33 und 38.
Ich bedanke mich schon mal jetzt für jede Hilfe!!!
Gruß
Modo
-
kontaktdaten
kontakdaten
-
OMG!
*im Boden versink*...Vielen Dank!
Habe ne Ewigkeit rumprobiert, aber das habe ich einfach übersehen.Wie war das? Man sieht den Wald vor lauter Bäumen nicht...
-
Selektive Wahrnehmung. Kommt vor...
-
Das NULL in Zeile 24 und 33 kannste dir sparen, allerdings brauchst du bei "a->next = NULL;" NULL, weil der Wert sonst undefiniert wäre und du bei Zeile 91 ne Endlosschleife hättest.