Kopiowanie tablic char'owych

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

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

}
0
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:

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

Oraz:

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

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