Главная » iPhone, Objective-C, Программирование для iOS и MacOS » Аргументы командной строки Objective-C

0

При вызове main() тоже передаются аргументы, которые я так старательно обходил вниманием:

int main (int argc, const char * argv[])

{

Но теперь вы готовы к знакомству с ними. argv – массив строк С; argc сообщает количество строк в массиве. Что представляют элементы массива? Аргументы командной строки.

Программы командной строки, которые мы создавали, запускались из Теrminаl-

приложения, которое всего лишь предоставляет удобный интерфейс к так называемому командному процессору (shell). Существует несколько разных командных процессоров с похожими именами: csh, sh, zsh и ksh, но почти все пользователи Мас используют bash. При запуске программы из bash после имени программы можно задать любое количество аргументов, разделенных пробелами. Эти аргументы упаковываются в массив argv перед вызовом main ().

Честно говоря, программисты Сосоа и iOS редко используют argv и argc. Тем не менее для написания любой вспомогательной программы командной строки вам почти наверняка придется пользоваться ими.

Создайте в Xcode новый проект программы командной строки С с именем

Affirmation. Программа Affirmation получает два аргумента: имя человека и число

n, и n раз выводит сообщение с заданным именем.

$ Affirmation Mikey 3 Mikey is cool. Mikey is cool.

Mikey is cool.

Прежде чем решать основную задачу, измените функцию main() так, чтобы она выводила каждый из аргументов в аrgv:

#include <stdio.h>

int main (int argc, const char * argv[])

{

for (int i = 0; i < argc; i++) { printf("arg %d = %s\n", i, argv[i]);

}

return 0; }

Если программа запускается из bash, аргументы можно просто ввести в командной строке:

$ Affirmation Aaron 4

Рис. 36.1, Добавление аргументов

Но для выполнения программы с аргументами в Xcode необходимо предварительно отредактировать схему. Выберите в меню Product команду EditScheme…

В открывшемся окне выберите слева команду Run Affirmation и перейдите на вкладку Arguments в верхней части окна. Найдите список Arguments Passed On Launch и при помощи кнопки + добавьте два аргумента: имя и номер.

Щелкните на кнопке ОК,чтобы закрыть окно.

При запуске программы в массиве argv передается список строк. Начинающих разработчиков обычно больше всего удивляет argv[0]:

arg 0 = /Users/aaron/Library/Developer/Xcode/DerivedData/

Affirmation-­‐enkfqsgavfsproeggoxwbrmcowvn/Build/Products/Debug/Affirmation arg 1 = Aaron

arg 2 = 4

Элемент argv[0] содержит путь к исполняемому файлу программы.

Рис. 36.2. argv и argc в программе Affirmation

Если программа получает аргументы, прежде всего необходимо убедиться в том, что ей передано правильное количество аргументов. Внесите изменения в main.m:

#inctude <stdio.h>

<in t!#e =st#tib.h> // atoi %

int main  int argc! const char " argv#$%

&

if (arg  @) C) 7

fprintf(st#err1 "HsageU Lffirmation =name> =n!mber>\n"); ret!rn   *;

8

int o!nt ) atoi(argvR,S);

for (int ; ) &; ; =  o!nt; ;44) 7 printf("0s is  oot.\n"1 argvR*S);

8

return -,

.

atoi ()  –  стандартная  функция  С,  которая  читает  строку  С  и  пытается преобразоватъ ее в число типа int.

Постройте и запустите программу.

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии