Проблем при използването на strcpy със стойности на масив от символи и низове в Objective-C

Взимам курс по Objective-C и ми казаха „Създайте масив от знаци, наречен names. Попълнете масива с пет първи имена. Използвайте командата 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 масив или това е единственият начин? Струва ми се странно, че моят инструктор не е включил урок за 2d масиви, преди да ми зададе този въпрос. - person user3055015; 10.12.2013
comment
Няма друг начин. Тъй като вашето изискване е да попълните 5 имена. Имената означават множество символи (което е масив!!!) и 5 ​​имена означават масив от масив, следователно 2D-масив. - person Anoop Vaidya; 10.12.2013