strcpy Проблемы с 2D-массивом в функциях

Могу я спросить, что не так с моим кодом? strcpy работает только внутри функции. Но когда я передаю его другой функции, первый массив печатается нормально, а остальные печатаются неправильно?

В чем проблема с моим кодом и как правильно?

Вот код:

void copyString(char *data, int ctr){
   int i;
   char constData[10][50] = {{"Hello"}, {"Goodbye"}, {"Konichiwa"}, {"Sayonara"},
                             {"Ni Hao"}, {"Zai Jian"}, {"Annyeong Haseyo"},
                             {"Annyeonghi Gaseyo"}, {"Bonjour"}, {"Au Revoir"}};
   char temp[50][100];

   strcpy(temp[ctr], constData[ctr]);

   if (ctr == 4)
      for(i = 0; i <=ctr; i++)
          printf("In function: %s\n", temp[i]); 

   strcpy(&data[ctr], temp[ctr]);
}

int main() {
   int i = 0, ctr = 0;
   char data[20][10];

   for (ctr = 0; ctr <= 4; ctr++)
       copyString(data[ctr], ctr);

   printf("\n");
   for(i = 0; i <= 4; i++)
         printf("%s\n", data[i]);

   return 0;
}

Результат дал мне это:

Выполняется функция: Hello
Выполняется функция: Goodbye
Выполняется функция: Konichiwa
Выполняется функция: Sayonara
Выполняется функция: Ni Hao

Hello


a
а

Но вывод должен быть таким:

Выполняется функция: Hello
Выполняется функция: Goodbye
Выполняется функция: Konichiwa
Выполняется функция: Sayonara
Выполняется функция: Ni Hao

Hello
Goodbye
Konichiwa
> Сайонара
Ни Хао

Заранее спасибо!


person roldChang    schedule 10.08.2013    source источник


Ответы (1)


Вот ваш виновник:


strcpy(&data[ctr], temp[ctr]);

Это должно быть:


strcpy(data, temp[ctr]);
person hesson    schedule 10.08.2013