Stringausgabe eines mehrdimensionalen Arrays



  • Hallo,

    ich hab ein dreidimensionales Array in Gebrauch. In jedem Feld der Ebene befinden sich 5 Felder worin eine Zeichenkette abgelegt ist (array[3][3][5]). Nun will ich mir diese Kette ausgeben lassen ohne dabei jedes Feld einzeln ansprechen zu müssen. Analog zu:

    char feld[]="abc";
    printf("%s",feld);

    Nun hatte ich es wie folgt versucht um den String, der zu einer bestimmten Koordinate gehört, auszugeben. Scheint leider nicht ganz richtig zu sein.

    printf("%s",array[zeile][spalte]);



  • printf("%s", &array[zeile][spalte]);
    

    😉



  • Bei mir ändert sich da leider nix.

    char feld[2][3] = {{"abc"},{"def"}};
    printf("%s", &feld[0]); --> Ergebnis: abcdefFK...

    Es wird leider nicht nur die Zeile 0 ausgelesen sondern alles was im Array steht plus eventuellen Müll aus dem Speicher.



  • Für die Zukunft: du hattest irgendwie die Fehlerbeschreibung vergessen! 🙂

    EDIT: Deine Zeichenketten müssen auch mit einer 0 abschließen, sonst passiert genau, was du beschrieben hast! "HANS" ist eine Zeichenkette der Länge 5 und wird mit einer binären Null (String-Ende-Zeichen) abgeschlossen.

    EDIT2: Und natürlich musst du für einen String "abc" 4 Bytes bereitstellen, eben wegen der abschließenden Null.



  • dein feld is zu klein das muss [2][4] sein. ansonsten is es schon richtig wie du es in deinem ausgangspost machen wolltest, also feld[0]. Wilmas beitrag war natürlich schwachsinn



  • Ich bin von dem Array ausgegangen: array[3][3][5], um die hintern (nullterminierten)5 anzusprechen
    die Adresse von ( &array[x][y] ) also einer Dimension weniger. 😉



  • Alles klar, nun läufts wie gewünscht.
    Besten Dank.



  • "HANS" ist eine Zeichenkette der Länge 5

    Mein strlen() funktioniert scheinbar nicht richtig.


Anmelden zum Antworten