zeiger in einer struktur



  • Hallo, bräuchte mal eure Hilfe!
    Es geht darum, warum mir in der Funktion strcpy() eine Speicherschutzverletzung passiert!

    Ich habe in einer h. Datei eine struktur mit typedef deklariert!
    Hier die header datei!

    typedef struct{
    char *nachname;
    char *vorname;
    int gender;
    }personal;
    

    Nun will ich den Mitgliedern der Struktur Werte zuweisen! Mit den integer werten funktioniert das auch! Nur leider mit den Strings nicht !
    Was mache ich hier falsch! Die pointer in der header datei sollten jedoch bestehen bleiben!

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include "pers.h"
    
    int main()
    {
    const char *name="Schulz";
    personal *eins=malloc(sizeof(personal));
    if(eins)
    {
    strcpy(eins->nachname,name);
    strcpy(eins->vorname,"Maria");
    eins->gender=1;
    }
    
    printf("Name: %s\nVorname: %s\nGeschlecht: %d\n",eins->nachname,eins->vorname,eins->gender);
    return 0;
    }
    

    Könnte mir da jemand weiterhelfen!



  • So wie du den Speicher reservierst, hast du zwar Speicher für die Struktur selbst, aber nicht worauf die beiden Zeiger zeigen. Du musst also noch für jeden Zeiger extra Speicher reservieren, sonst zeigen die irgendwo hin.

    PS: Kannst du bitte aufhören jeden Satz mit einem '!' zu beenden? 😉



  • Danke, für den Tip. Ich dachte das macht der Compiler.

    PS: Kannst du bitte aufhören jeden Satz mit einem '!' zu beenden?

    Da hab ich wohl jedem einzelnen Satz etwas zuviel Bedeutung zugemessen! 😃



  • Mr. Catdriver schrieb:

    PS: Kannst du bitte aufhören jeden Satz mit einem '!' zu beenden?

    Da hab ich wohl jedem einzelnen Satz etwas zuviel Bedeutung zugemessen!

    du bist keine ausnahme. im winapi-forum gibts auch ein paar spezialisten, die fast jeden satz mit ! abschliessen.
    🙂


Anmelden zum Antworten