С каким именем вызывается главная функция программы при ее запуске

Иногда при запуске программы бывает полезно передать ей какую-либо информацию. Обычно такая информация передается функции main() с помощью аргументов командной строки. Аргумент командной строки — это информация, которая вводится в командной строке операционной системы вслед за именем программы. Например, чтобы запустить компиляцию программы, необходимо в командной строке после подсказки набрать примерно следующее:

cc имя_программы

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

Чтобы принять аргументы командной строки, используются два специальных встроенных аргумента: argc и argv . Параметр argc содержит количество аргументов в командной строке и является целым числом, причем он всегда не меньше 1, потому что первым аргументом считается имя программы. А параметр argv является указателем на массив указателей на строки. В этом массиве каждый элемент указывает на какой-либо аргумент командной строки. Все аргументы командной строки являются строковыми, поэтому преобразование каких бы то ни было чисел в нужный двоичный формат должно быть предусмотрено в программе при ее разработке.

#40. Объявление и вызов функций | Язык C для начинающих

Вот простой пример использования аргумента командной строки. На экран выводятся слово Привет и ваше имя, которое надо указать в виде аргумента командной строки.

#include #include int main(int argc, char *argv[]) < if(argc!=2) < printf(«Вы забыли ввести свое имя.n»); exit(1); >printf(«Привет %s», argv[1]); return 0; >

Если вы назвали эту программу name (имя) и ваше имя Том, то для запуска программы следует в командную строку ввести name Том . В результате выполнения программы на экране появится сообщение Привет, Том .

Во многих средах все аргументы командной строки необходимо отделять друг от друга пробелом или табуляцией. Запятые, точки с запятой и тому подобные символы разделителями не считаются. Например,

run Spot, run

состоит из трех символьных строк, в то время как

Эрик, Рик, Фред

представляет собой одну символьную строку — запятые, как правило, разделителями не считаются.

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

Очень важно правильно объявлять argv . Вот как это делают чаще всего:

char *argv[];

Пустые квадратные скобки указывают на то, что у массива неопределенная длина. Теперь получить доступ к отдельным аргументам можно с помощью индексации массива argv . Например, argv[0] указывает на первую символьную строку, которой всегда является имя программы; argv[1] указывает на первый аргумент и так далее.

Читайте также:
В каком поколении машин появились программы

Другим небольшим примером использования аргументов командной строки является приведенная далее программа countdown (счет в обратном порядке). Эта программа считает в обратном порядке, начиная с какого-либо значения (указанного в командной строке), и подает звуковой сигнал, когда доходит до 0. Обратите внимание, что первый аргумент, содержащий начальное значение, преобразуется в целое значение с помощью стандартной функции atoi() . Если вторым аргументом командной строки (а если считать аргументом имя программы, то третьим) является строка «display» (вывод на экран), то результат отсчета (в обратном порядке) будет выводиться на экран.

Язык C++ с нуля | #14 Функции в c++.


/* Программа счета в обратном порядке. */ #include #include #include #include int main(int argc, char *argv[]) < int disp, count; if(argc<2) < printf(«В командной строке необходимо ввести число, с которогоn»); printf(«начинается отсчет. Попробуйте снова.n»); exit(1); >if(argc==3 !strcmp(argv[2], «display»)) disp = 1; else disp = 0; for(count=atoi(argv[1]); count; —count) if(disp) printf(«%dn», count); putchar(‘a’); /* здесь подается звуковой сигнал */ printf(«Счет закончен»); return 0; >

Обратите внимание, если аргументы командной строки не будут указаны, то будет выведено сообщение об ошибке. В программах с аргументами командной строки часто делается следующее: в случае, когда пользователь запускает эти программы без ввода нужной информации, выводятся инструкции о том, как правильно указывать аргументы.

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

#include int main(int argc, char *argv[]) < int t, i; for(t=0; tprintf(«n»); > return 0; >

Помните, первый индекс argv обеспечивает доступ к строке, а второй индекс — доступ к ее отдельным символам.

Обычно argc и argv используют для того, чтобы передать программе начальные команды, которые понадобятся ей при запуске. Например, аргументы командной строки часто указывают такие данные, как имя файла, параметр или альтернативное поведение. Использование аргументов командной строки придает вашей программе «профессиональный внешний вид» и облегчает ее использование в пакетных файлах.

Имена argc и argv являются традиционными, но не обязательными. Эти два параметра в функции main() вы можете назвать как угодно. Кроме того, в некоторых компиляторах для main() могут поддерживаться-дополнительные аргументы, поэтому обязательно изучите документацию к вашему компилятору.

Когда для программы не требуются параметры командной строки, то чаще всего явно декларируют функцию main() как не имеющую параметров. В таком случае в списке параметров этой функции используют ключевое слово void .

Читайте также:
Как удалить программу глаз ТВ

Источник: t-r-o-n.ru

Функция main и выполнение программ

Каждая программа C имеет основную функцию, которая должна иметь имя main . Функция main служит отправной точкой для выполнения программы. Она обычно управляет выполнением программы, вызывая другие ее функции.

К функции применяется несколько ограничений main , которые не применяются к другим функциям C. Функция main :

  • Не может быть объявлен как inline .
  • Не может быть объявлен как static .
  • Не может быть принято его адрес.
  • Не удается вызвать из программы.

Сигнатура main функции

Функция main не имеет объявления, так как она встроена в язык. Если это так, синтаксис объявления для main будет выглядеть следующим образом:

int main( void ); int main( int argc, char *argv[ ] ); int main( int argc, char *argv[ ], char *envp[ ] );

Функция main объявляется неявно с помощью одной из этих сигнатур. При определении main функции можно использовать любую из этих сигнатур. Компилятор Майкрософт также позволяет main иметь тип возвращаемого void значения, если значение не возвращается. Параметры argv и envp можно wmain также определить как тип char** . Дополнительные сведения о аргументах см. в разделе Описание аргумента.

Примечания

Функции в исходном коде программы выполняют одну или несколько конкретных задач. Функция main может вызывать эти функции для выполнения соответствующих задач. При main вызове другой функции она передает управление выполнением функции, поэтому выполнение начинается с первого оператора в функции. Функция возвращает управление при main выполнении return инструкции или достижении конца функции.

Можно объявить любую функцию, включая main , для получения параметров. Термин «параметр» или «формальный параметр» относится к идентификатору, получающему значение, передаваемое функции. Сведения о передаче аргументов в качестве параметров вы найдете в статье Параметры.

Когда одна функция вызывает другую, вызываемая функция получает значения своих параметров от вызывающей функции. Эти значения называются аргументами. Можно объявить формальные параметры в , main чтобы получать аргументы из командной строки в формате, показанном в сигнатуре функции.

Если вы хотите передать сведения в функцию main , параметры обычно называются argc и argv , хотя компилятор C не требует этих имен. Как правило, если третий параметр передается в main , этот параметр называется envp . Типы для argc , argv и envp определяются языком C. Можно также объявить argv как char** argv и envp как char** envp . В приведенных ниже в данном разделе примерах описывается использование этих трех параметров для доступа к аргументам командной строки. Эти параметры объясняются в следующих разделах.

Читайте также:
Отличия программ начальной школы

Если ваш код соответствует модели программирования в Юникоде, в качестве точки входа в программу можно использовать версию расширенных символов main wmain майкрософт , . Дополнительные сведения об этой версии с расширенными символами main см. в разделе Использование wmain .

main Прекращения

Программа обычно прекращает выполнение, когда она возвращается из или достигает конца main , хотя она может завершиться в других точках программы по различным причинам. Например, может потребоваться принудительное завершение программы при обнаружении некоторого состояния ошибки. Для этого можно использовать функцию exit . Дополнительные сведения и exit пример использования см. в разделе exit .

Источник: learn.microsoft.com

Функция main()

Функция, которой передается управление после запуска программы, должна иметь имя main . Она может возвращать значение в вызвавшую систему и принимать параметры из внешнего окружения. Возвращаемое значение должно быть целого типа. Стандарт предусматривает два формата функции:

// с двумя параметрами:

тип main ( int argc , char * argv [])

При запуске программы из командной строки параметры разделяются пробелами. Имена параметров в программе могут быть любыми, но принято использовать argc и argv . Первый параметр argc определяет количество параметров, передаваемых функции, включая имя самой программы, второй параметр argv является указателем на массив указателей типа char *. Каждый элемент массива содержит указатель на отдельный параметр командной строки, хранящийся в виде С-строки, оканчивающейся нуль-символом. Первый элемент массива argv [0] ссылается на полное имя запускаемого на выполнение файла, следующий argv [ l ] указывает на первый параметр, argv [2] – на второй параметр, и так далее. Параметр argv [ argc ] должен быть равен 0.

Параметры функции main () служат для передачи программе аргументов командной строки, т. е. имен файлов, ключей, опций и вообще всего, что вы вводите с клавиатуры после подсказки DOS, запуская программу. Конечно, программа не обязана воспринимать какие-либо команды, указываемые в строке запуска, однако в любом случае функции main () передаются два параметра – число аргументов/включая имя, под которым запущена программа (argc), и массив указателей (argv) на отдельные аргументы (выделенные элементы командной строки).

Если функция main () ничего не возвращает (тип void ), вызвавшая система получит значение, означающее успешное завершение. Ненулевое значение означает аварийное завершение. Оператор возврата из main () можно опускать.

Рассмотрим пример программы, которая распечатывает все параметры программы main (), указанные при вызове.

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

Пусть исполняемый файл программы имеет имя main . exe и вызывается из командной строки с параметрами:

d:cppmain.exe one two three

На экран будет выведено:

Источник: h-l-l.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru