Zweidimensionales char-Array



  • Hallo Leute.

    Ich wollte eigentlich mit einem char-Array hantieren, bekomme das aber nicht so ganz hin.

    Ich stelle mir ein char-Array vor, das in jeder Zeile einen String enthält, demnach also eine Spalte hat.

    Dacht das geht so:

    char model[100][1];
    

    Und später möchte ich dann den Inhalt belegen:

    model[1][0] = "Test";
    model[2][0] = "Test2";
    model[3][0] = "Ich war hier!";
    

    Leider geben letztere Befehle immer ACCESS_VIOLATION's, da stimmt also was nicht...

    Was mache ich denn da falsch?



  • Du erzeugst quasi 100 "Strings" mit einem Zeichen Länge. Genaugenommen wäre da noch nicht mal Platz für die terminierende Null. Also gib deinen Strings etwas mehr Länge: 😉

    char arr[100][100];  //100*100 Zeichen
    

    EDIT: So kannst du natürlich trotzdem nicht deinen Strings was zuweisen. Verwende strncpy zum Kopieren von Zeichen in deine Strings/char-Arrays.



  • Klasse!

    Und wie muss ich dann eine Zeile in strncpy() ansprechen?

    So gehts jedenfalls nicht:

    strncpy(model[1][],*pLineToken[1],100);     /* Zeile 1 den Inhalt vom Pointer pLineToken[1] zuweisen */
    


  • Beispiel:

    char arr[100][100];
    	strncpy(arr[0],"hello ",7);  //das können natürlich irgendwelche dynamische
    	strncpy(arr[1],"world",6);   //Strings sein, die während der Laufzeit entstehen.
    


  • Mehrdimensionale Arrays verwendet man gewöhnlich für andere Dinge, nämlich für Zahlen. Für Strings können Strukturen mit struct übersichtlicher sein.

    struct XXX
    {
       char  text[100];
    };
    
    XXX array[3];
    XXX ziel;
    
    strcpy(array[0].text,"Hallo," );
    strcpy(array[1].text,"du da! ");
    strcpy(array[2].text,"Was machst du?");
    strcpy(ziel,array[0].text);   // "Hallo, "
    strcat(ziel,array[1].text);   // "Hallo, du da! "
    strcat(ziel,array[2].text);   // "Hallo, du da! Was machst du?"
    

    Geht aber auch, wie _matze beschrieben.


Anmelden zum Antworten