Kopiowanie tablic char'owych

Kopiowanie tablic char'owych
I9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 55
0

Witam,
Mam tutaj taki kawałek kodu, gdzieś jest błąd. Według mnie jest to naruszenie pamięci, ale mogę się mylić. Potrzebuję aby funkcja kopiuj działała do mojego zaliczenia, dlatego zwracam się do was z prośbą o pomoc. Z góry dziękuję ;)

Kopiuj
 
 void kopiuj(const char** skad,char** dokad, int N)
    {
        
        int i;
        for(i=0;i<N; i++) {
            **(dokad+i)=**(skad+i);
        }
    }
const char* nieposortowane[]={"basia", "zosia", "ala", "genowefa"};

int main(void) {
 	int porzadek;
        printf("Prosze ustalic porzadek sortowania:\n\t1 dla rosnacych,\n\t0 dla malejacych\n ");
        scanf("%d", &porzadek);
        char* wyrazy[4];
	kopiuj(nieposortowane, wyrazy, 4);

}
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
void kopiuj(const char** skad,char** dokad,int N)
  {
   int i;
   for(i=0;i<N;++i) dokad[i]=strdup(skad[i]); // nie zapomnij zwolnić za pomocą free
  }

Może lepiej:

Kopiuj
void kopiuj(const char** skad,char** dokad,int N) { while(N--) dokad[N]=strdup(skad[N]); }

Oraz:

Kopiuj
char *wyrazy[sizeof(nieposortowane)/sizeof(*nieposortowane)];
kopiuj(nieposortowane,wyrazy,sizeof(nieposortowane)/sizeof(*nieposortowane));

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.