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.


Anmelden zum Antworten