Проблема с использованием strcpy с массивом символов и строковыми значениями в Objective-C

Я прохожу курс по Objective-C, и мне сказали: «Создайте массив символов с именами. Заполните массив пятью именами. Используйте команду strcpy, чтобы скопировать строковые значения в массив».

Я закодировал свое решение для этого, но оно продолжает выдавать мне ошибки. Я играю с этим кодом уже 35 минут и до сих пор не могу заставить его работать или быть безошибочным.

Вот код, который я создал в ответ на приведенные выше инструкции:

  char names[24];
  strcpy (names, "Jeff", "Steve", "Stan", "Mike", "Travis");

Я не понимаю, почему это не будет работать должным образом, потому что я выделил правильное количество индексов char с 24 и чувствую, что я также правильно использовал функцию strcpy.

Вот ошибки, которые я получаю в xcode:

  1. Ожидал ";" после выражения - хочет поставить ; после strcpy
  2. Слишком много аргументов предоставлено для функционального вызова макроса.
  3. Посторонние ")" перед ";" - Хочет, чтобы я заменил ")" на кавычки"

Любая помощь в этом очень ценится.


person user3055015    schedule 10.12.2013    source источник
comment
Это неправильное использование strcpy. Должна быть ошибка компилятора, говорящая вам, что strcpy ожидает 2 параметра, а не 6.   -  person Matthias Bauch    schedule 10.12.2013
comment
Это раздел C класса Objective-C? Он не использует какие-либо функции языка Objective-C.   -  person ThomasW    schedule 10.12.2013


Ответы (1)


strcpy принимает только два аргумента.

Вы должны сделать так: strcpy (names, "Jeff");


Я думаю, вы хотите сохранить 5 имен в массиве. Для этого нужно создать 2D-массив.

char names[5][24];

А затем используйте:

strcpy (names[0], "Jeff");        
strcpy (names[1], "Steve");
...//etc
person Anoop Vaidya    schedule 10.12.2013
comment
Спасибо! Это сработало отлично. Есть ли альтернативный способ сделать это без 2D-массива или это единственный способ? Мне кажется странным, что мой инструктор не включил урок по двумерным массивам, прежде чем задать мне этот вопрос. - person user3055015; 10.12.2013
comment
Другого пути нет. Поскольку ваше требование состоит в том, чтобы заполнить 5 имен. Имена означают несколько символов (что является массивом!!!), а 5 имен означают массив массивов, следовательно, 2D-массив. - person Anoop Vaidya; 10.12.2013