Linked list (C)



  • Hi , ich hab ein Problem mit meinem code und zwar:

    Ich erhalte immer folgende Fehlermeldung beim compilieren.

    [Error] incompatible types when assigning to type 'char[255]' from type 'char *'

    mein code:

    struct _element{
    char title[MAX_STR];
    char author[MAX_STR];
    int year;
    long long int isbn;
    
    element* next;
    };
    
    element *construct_element(char *title, char* author, int year, long long int isbn) {
        element* Buch = (element*) malloc(sizeof(element));
        Buch->title = title;
        Buch->author = author;
        Buch->year = year;
        Buch->isbn = isbn;
        Buch->next = NULL;
        return Buch;
    }
    

    So wie ich das verstanden haben die zwei Zuweisungen probleme mit den beiden chars ( title und author):

    Buch->title = title;
    Buch->author = author;
    

    Wie löse ich das problem? Wenn ich

    char title[MAX_STR];
    char author[MAX_STR];
    

    zu

    char *title;
    char *author;
    

    ändere hab ich das Problem ja nicht mehr doch ich muss das [MAX_STR] verwenden.



  • ...



  • Buch über C lesen. Kapitel Strings.

    Dann wirst du erfahren, wie Strings in C funktionieren und dass du dazu strcpy brauchst: http://www.cplusplus.com/reference/cstring/strcpy/



  • Bitmapper schrieb:

    return Buch;
    

    Die lokale Variable ist doch nur in der Funktion gültig -> Speicherleck!

    Blödsinn!
    Buch ist ein Zeiger und der Bereich auf den Buch zeigt, wurde mit malloc beschafft.
    Es wird ja nur der Inhalt von Buch (die Adresse) zurück gegeben. KEin Speicherleck

    Bitmapper schrieb:

    element *construct_element(char title[MAX_STR], char* author, int year, long long int isbn)
    

    Auch Blödsinn, da title da genauso ein char* ist.



  • DirkB schrieb:

    Auch Blödsinn, da title da genauso ein char* ist.

    ?

    char title[MAX_STR];
    


  • Bitmapper schrieb:

    DirkB schrieb:

    Auch Blödsinn, da title da genauso ein char* ist.

    ?

    char title[MAX_STR];
    

    Für dich das KApitel: Arrays als Parameter von Funktionen.
    Spielt eine wichtige Rolle bei Strings.

    Zudem kannst du immer noch nicht ganze Arrays mit einem = zuweisen.
    (ich meine nicht initialisieren)



  • DirkB schrieb:

    Buch über C lesen. Kapitel Strings.

    Dann wirst du erfahren, wie Strings in C funktionieren und dass du dazu strcpy brauchst: http://www.cplusplus.com/reference/cstring/strcpy/

    Okey super vielen Dank , das war mein Fehler :D.
    Bin halt noch ein totaler studi anfänger.


Anmelden zum Antworten