Kopiowanie tablicy wskaznikow (jezyk c)

0

Witam.

Mam problem.
Mam tablice wskaznikow char *tab[10]
Chce ja skopiowac do tablicy char *tab1[10] i pozniej skasowac tab.
Gdy kopiowalem tablice w taki sposob tab1[i]=tab[i] to po skasowaniu tab w tab1 gdzieniegdzie byly smieci. W jaki sposob skopiowac taka tablice?

Prosze o pomoc.

0

widocznie cos zle kopiowałeś

int i=10;
while(i--)tab1[i]=tab[i];

albo

memcpy(tab1,tab,sizeof(char*)*10);

// tyle ze oba sposoby kopiują 10 wskaznikow do tekstu, nie kopiują zawartosci ciagów znakow, wiec jesli potrzebujesz, to kombinuj dalej

0

Tablica tab jest zapelniona np. tab[0]="mama", tab[1]="tata", ... itp
Gdy kopiowalem
for(i=0;i<10;i++)
tab1[i]=tab[i]

to przed usunieciem tab (za pomoca delete[] tab) zawartost tab1 byla ok, a po skasowaniu tab bylo kiepsko.

Mysle, ze powod jest taki sam, jakbym mial 2 zwykle tablice i zrobilbym tab1=tab2 (a to jest blad).

Jesli ktos ma pomysl, to prosze o rade.

<ort>na razie</ort> walcze sam... [???]

0
int i;
int l;
for(i=0;i<10;i++)
{
    for(l; Dlugosc( tab[i] ); l++)
    {
        tab1[i][l] = tab[i][l];
    }
}

Gdzie dlugosc zwraca długość elementu tablicy...
Nie znam się za C zbytnio więc być może to nie działa...

0

Probowalem tez tak, ale program sie sypal.

O.K. Dzieki za pomoc. Poradzilem sobie inaczej.

0

Trzeba zrobic:

for(int i=0; i<ilosc; i++)
{
tab1[i]=new char [strlen(tab[i])];
strcpy(tab1[i],tab[i]);
}

tzn. najpierw zaalokowac pamiec na to, co jest w tab1[i]

0

Trzeba zrobic:

for(int i=0; i<ilosc; i++)
{
tab1[i]=new char [strlen(tab[i])];
strcpy(tab1[i],tab[i]);
}

tzn. najpierw zaalokowac pamiec na to, co jest w tab1[i]

Dzieki wszystkim za wskazówki.

Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1