On Sun, Jan 09, 2000 at 06:25:18PM +0100, Jure Koren wrote:
> On Sun, Jan 09, 2000 at 04:39:23PM +0100, Iztok Pizorn wrote:
> > pozdravljeni!
> > spet imam eno lame vprasanje (libc sem prebral, ampak ni noter...);
> > rad bi, da mi kdo poda s simple primerom, kako naj uporabim to, kar vrne
> > funkcija char **funkcija();
> > char** funkcija() {
> >     char *enota[3];
> >     char **k_enota = enota;
> >     char niz1[] = "niz1", niz2[]="niz2";
> >     enota[0] = &niz1[0];
> >     enota[1] = &niz2[0];
> >     enota[2] = NULL;
> >     return (k_enota);
> > }
> > 
> > torej, ne vem niti, ce sem funkcijo prav napisal... 
> > potem bi pa rad uporabil v drugi funkciji:
> > 
> > void funkcija2(){
> >     char **besede;
> >     besede = funkcija();
> > }
> > 
> > in bi potem lahko crpal npr. 
> > char enniz[10];
> > strcpy(enniz, besede[1]); //besede[1] = "niz2"!
> > 
> > itd.
> > vse kar naredim, mi program vrne segmentation fault/core dumped...
> Zdaj, ko si to pospravil, moras sele priredit **k_enota spremenljivki
> vrednost pointerja enota.
> 
> k_enota = enota;
> 
> Zdaj k_enota kaze na prvi niz (niz1), ki mu sledi drugi, in potem null.
> In ne sme vec javljat segfaulta.

Sorry, mal bluzim :)

Torej, trik je samo, da pri char **k_enota = enota; enota se nima
nobene pametne vrednosti. Tik pred return (k_enota); dodaj tistole
k_enota = enota;

                                Jure

Reply via email to