1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define G_STR_LENGTH 50 // global
#define G_ARRAY_GET_ELT(ARRAY, X) (ARRAY + ((G_STR_LENGTH + 1) * X))
// ...
size_t nb_str = 30;
char* tab_strs = malloc(nb_str * ((G_STR_LENGTH + 1) /* * sizeof(char) */)); // +1 with '\0' and sizeof(char) is always 1
if (tab_strs != NULL) {
strcpy(tab_strs, "To be");
strcpy(G_ARRAY_GET_ELT(tab_strs, 1), "or not");
strcpy(G_ARRAY_GET_ELT(tab_strs, 2), "to be");
printf("str1: %s, str2: %s, str3: %s\n", tab_strs, G_ARRAY_GET_ELT(tab_strs, 1), G_ARRAY_GET_ELT(tab_strs, 2));
char* tmp_tab[30] = {tab_strs, G_ARRAY_GET_ELT(tab_strs, 1), G_ARRAY_GET_ELT(tab_strs, 2)};
printf("str1: %s, str2: %s, str3: %s\n", tmp_tab[0], tmp_tab[1], tmp_tab[2]);
free(tab_strs); // don't forget free(tab_strs)
} else {
// Allocation failed
} |
Partager