динамічний двовимірний масив у c

malloc sizeof char

Коментарі

(willothewisp | 03/09/2004, с - 13:32)

Привітання
Хтось міг мені допомогти?
Минуло близько півдня, але я досі не з’ясував, чому процедура нижче не працює?
[код: 1: 391093eb67]
#включати
#включати
#включати

int fill (char *** arr)

* arr = malloc (sizeof (char *) * 2);
* arr [0] = malloc (sizeof (char) * 20);
strcpy (* arr [0], "testtext0");
* arr [1] = malloc (sizeof (char) * 20);
strcpy (* arr [1], "testtext1");

заповнити (& t);
printf ("% s \ n", t [0]);
printf ("% s \ n", t [1]);
повернути 0;
>
[/ код: 1: 391093eb67]
Коли функція заливки повертає t [0], це нормально, але t [1], здається, втрачено - повертає NULL.
Ось як це працює:
[код: 1: 391093eb67]
#включати
#включати
#включати

t = malloc (sizeof (char *) * 2);

t [0] = malloc (sizeof (char) * 20);
strcpy (t [0], "testtext0");
printf ("% s \ n", t [0]);

t [1] = malloc (sizeof (char) * 20);
strcpy (t [1], "testtext1");
printf ("% s \ n", t [1]);

повернути 0;
>
[/ код: 1: 391093eb67]
Це просто не красиво. Ну, якщо у мене було стільки часу, я б точно хотів знати, як вирішити той факт, що основна функція оголошує лише майбутній масив рядків - який заздалегідь невідомо, скільки і скільки рядків він буде складатися - а всі інші операції - включаючи виділення пам'яті - виконують окремі функції.
допомога;
if (help> 0) printf ("спасибі \ n");
>