matrice bidimensională dinamică în c

matrice bidimensională dinamică în c

malloc sizeof

Comentarii

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

Salut
M-ar putea ajuta cineva?
Am participat de aproximativ jumătate de zi, dar încă nu mi-am dat seama de ce procedura de mai jos nu funcționează?
[cod: 1: 391093eb67]
#include
#include
#include

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");

umplere (& t);
printf ("% s \ n", t [0]);
printf ("% s \ n", t [1]);
retur 0;
>
[/ code: 1: 391093eb67]
Când funcția de umplere returnează t [0] este bine, dar t [1] pare a fi pierdut - returnează NULL.
Iată cum funcționează:
[cod: 1: 391093eb67]
#include
#include
#include

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]);

retur 0;
>
[/ code: 1: 391093eb67]
Nu este deloc frumos. Ei bine, dacă am avut atât de mult timp pe el, aș vrea cu siguranță să știu cum să rezolv funcția principală pentru a declara viitoarea matrice de șiruri - pe care nu le puteți ști în avans, câte și cât timp liniile din care va consta - și toate celelalte operații - inclusiv alocarea memoriei - îndeplinesc funcții separate.
Ajutor;
if (ajutor> 0) printf ("mulțumesc \ n");
>