Скопировать массив символов в другой массив символов - PullRequest
0 голосов
/ 25 июня 2011

Я безуспешно пытаюсь скопировать массив символов в другой. Я попытался memcpy копировать адрес напрямую из одного в другой, например:

void include(int id, char name[16]) {
int i;

  for (i = 0; i < SZ; i++) {
      if (a[i].id == 0) {
          a[i].id = id;
          memcpy(&a[i].name, &name, strlen(name)+1);
          return;
      }
  }
}

Но, очевидно, работает только внутри этой функции. Я пробовал также так: http://www.cplusplus.com/reference/clibrary/cstring/memcpy/, но это не сработало. Кто-нибудь может мне помочь?

1 Ответ

4 голосов
/ 25 июня 2011

Удалите & из &name, и оно должно работать. Объявление вашей функции вводит в заблуждение; это на самом деле эквивалентно:

void include(int id, char *name)

Компилятор делает вид, что массив параметр был объявлен как указатель

Если name будет массивом, name == &name. Но name это указатель, поэтому name != &name.

В FAQ C есть несколько вопросов, которые могут помочь:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...