dinamikus 2dimenziós tömb c-ben

 ( willothewisp | 2004. szeptember 3., péntek - 13:32 )

dinamikus 2dimenziós tömb c-ben

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Üdvözlet
Tudna valaki segíteni?
Már vagy egy fél napon ráment, de még mindig nem jöttem rá, miért nem működik az alábbi eljárás?
[code:1:391093eb67]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int fill (char ***arr) {

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

return 0;
}

int main ()
{
char **t;

fill (&t);
printf ("%s\n", t[0]);
printf ("%s\n", t[1]);
return 0;
}
[/code:1:391093eb67]
A fill függvény visszatértekor t[0] rendben van, de a t[1] mintha elveszne - NULL értékkel jön vissza.
Így viszont működik:
[code:1:391093eb67]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main ()
{
char **t;

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

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

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

return 0;
}
[/code:1:391093eb67]
Csak így éppen nem szép. No meg ha már ennyi időm ráment, mindenképpen szeretném megtudni, hogyan lehet megoldani, hogy a main függvényben csak deklarálódjon a leendő karakterlánc-tömb - amiről előre nem lehet tudni, hány és millyen hosszú sorokból fog állni -, és az összes egyéb műveletet - beleértve a memóriafoglalást - külön függvények végezzenek.
help (&segítség);
if (segítség > 0) {
printf ("köszönöm\n");
}

[quote:3738758897="willothewisp"]
*arr[1] = malloc (sizeof (char) * 20);
[/quote:3738758897]

*arr[1] != (*arr)[1]

Milyen igaz!
És így tényleg működik.
Köszönöm.