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.