einem Array einen String zuweisen



  • hallo,

    ich habe eine frage zu arrays, denen ein String zugewiesen wird.

    also angenommen, ich habe folgendes implementiert:

    char eingabeAlphabet[1] = "01";

    und ich will das mit:

    printf("%s", eingabeAlphabet);

    als String ausgeben. dann sagt mir aber der compiler aber:

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

    was mach ich da falsch? kann mir da jmd. behilflich sein?



  • Um das Stringliteral "01" abzulegen, werden in C 3 Speicherstellen des Typ char benötigt. '0', '1' und eine abschließende '\0'
    Du willst deinem Array aber nur 1 (in Worten ein) Zeichen zugestehen.

    Lass den Compiler zählen und schreibe einfach:

    char eingabeAlphabet[] = "01"; // Ja, die Klammer ist leer
    

  • Mod

    Du willst ein Array mit einem Zeichen mit einem Literal der Länge 3 initialisieren.

    Das sollte an sich jedoch funktionieren und bloß eine strenge Warnung wert sein (und dann zur Laufzeit abstürzen), die Fehlermeldung deutet darauf hin, dass du stattdessen

    char foo[1];
    foo = "01";
    

    gemacht hast. Dazu kann man folgendes sagen:
    1. Bitte den dritten Link in meiner Signatur durchlesen. Du verschwendest bloß die zeit freiwilliger Helfer, wenn du nicht den richtigen Code angibst.
    2. Arrays haben keine Zuweisungssemnantik, die scheinbare Ausnahme bei der Initialisierung ist keine "richtige" Zuweisung. Du musst jedes Element einzeln kopieren. Die Funktionen strcpy (für nullterminierte Zeichenketten unbekannter Länge) und memcpy (für beliebige Arten von Daten bekannter Länge) aus der Standardbibliothek sind bereits fix und fertig füê diesen Zweck verfügbar.
    3. Unbedingt nochmal Grundlagen zu Arrays und insbesondere Zeichenketten angucken. Das ist sehr wichtig, dass man diese beherrscht!



  • Im übrigen funktioniert diese Art Zuweisung nur bei der Definition vom Array.
    Im weitern Verlauf musst du dann strcpy bemühen.

    Hast du irgendwo noch

    eingabeAlphabet = "02"; // in der Art
    

    stehen?


Log in to reply