char array
-
hallo,
ich moechte ein mehrdimensionales char array bei der Definition initialisieren.
wie z.b ein int array:int[2][2] = {{1,2},{3,4}}
schoen waere zudem auch ein bsp fuer ein dynamisches char array, dass anschliesend mit strings gefuellt werden sollte.
viele gruesse
-
Hallo!
Wenn es sich um Zeichen handelt kann man das doch so machen:
char zeichen_array[2][2] = { {'a','b'}, {'c','d'} }
Handelt es sich um strings müsste man glaube ich ein Array von Zeigern bilden:
char *string_array[2][2] = { {"erstens", "zeitens"}, {"drittens", "viertens"} }
Ich hoffe ich habe jetzt nichts falsches gepostet!
Gruß
Michael
-
Hallo, ich bins noch mal!
Will man das Array nachträglich mit Strings füllen, müsste man nach meinem Wissen folgendes tun:
char *array_string[2][2]; /* . . . */ array_string[1][1] = (char *)calloc(strlen("Hans_im_Glück") + 1, sizeof(char)); array_string[1][1] = "Hans_im_Glück"; array_string[1][2] = (char *)calloc(strlen("Hans_Wurst") + 1, sizeof(char)); array_string[1][2] = "Hans_Wurst"; /* usw. */
Wie immer alles ohne Gewähr!
Gruß
Michael
-
Hi,
danke fuer deine Antworten
ich habe folendes array:char *s_cont[3] = {"test1", "test2", "test3"};
ich moechte nun den inhalt uber eine for schleife in ein dynamisches char array reinschaufeln.
ich stell mir dass dann so vor, das dann der 1. zeiger des dynamischen arrays dann den inhalt("test1") von char *s_cont[1] besitzt usw.mist ist gar nicht so einfach zu erklaeren, vielleicht wisst ihr ja was ich meine!
gruss petersjo
-
ich hab bei integer arrays sowas gebastelt, sieht dann folgendermassen aus:
i_attr = (int*) malloc(i_counter *sizeof(int)); //integer feld wird initialisiert int i_cont[2]= {info->dwMapDimm, info->dwMapZoom}; for ( int i = 0; i < i_counter; i++) { i_attr[i] = i_cont[i]; }
sowas in der art moecht ich fuer strings
-
Hallo!
Vielleicht kann ich dir damit helfen:
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) /* Bestimmt die Anzahl der Elemente eines Arrays */ int i = 0; char *s_cont[] = {"test1", "test2", "test3"}; /* Hier kannst du soviel eintragen wie du möchtest */ char *dyn_array[ARRAY_SIZE(s_cont)]; for (i = 0; i < ARRAY_SIZE(s_cont); i++) { dyn_array[i] = (char *)calloc(strlen(s_cont[i]) + 1, sizeof(char)); dyn_array[i] = s_cont[i]; }
Am Ende des Programms natürlich 'free()' nicht vergessen.
Ich hoffe ich konnte dir damit helfen!Gruß
Michael
-
hallo,
ich muss das noch implementieren, aber das sollte es sein.
vielen dank, falls ich doch noch fragen hab, werd ich mich morgen melden,
gruss