Аргументы argc
и argv
из main
используются как способ отправки аргументов программе, возможно, наиболее знакомый способ - использовать старый добрый терминал, где пользователь может ввести cat file
. Здесь слово cat
- это программа, которая принимает файл и выводит его на стандартный вывод (stdout
).
Программа получает количество аргументов в argc
и вектор аргументов в argv
, в приведенном выше arg ument c ount будет два (имя программы считается первым аргумент), а эктор arg ument v будет содержать [_9 _, _ 10_, null]. Пока последний элемент является нулевым указателем.
Обычно вы пишете это так:
int // Specifies that type of variable the function returns.
// main() must return an integer
main ( int argc, char **argv ) {
// code
return 0; // Indicates that everything went well.
}
Если ваша программа не требует никаких аргументов, также можно написать main
-функцию следующим образом:
int main() {
// code
return 0; // Zero indicates success, while any
// Non-Zero value indicates a failure/error
}
В ранних версиях языка C не было int
до main
, как это подразумевалось. Сегодня это считается ошибкой.
В системах, совместимых с POSIX (и Windows), существует возможность использовать третий параметр char **envp
, который содержит вектор программ env железные переменные. Существуют и другие варианты списка аргументов функции main
, но я не буду подробно описывать их здесь, поскольку они нестандартны.
Кроме того, именование переменных является соглашением и не имеет реального значения. Всегда полезно придерживаться этого правила, чтобы не сбивать с толку других, но было бы также правильно определить main
как
int main(int c, char **v, char **e) {
// code
return 0;
}
И что касается вашего второго вопроса, есть несколько способов отправить аргументы программе. Я бы порекомендовал вам взглянуть на exec*()
семейство функций, которое является POSIX strong> -standard, но, вероятно, проще просто использовать _21 _ ("command arg1 arg2")
, но использование system()
обычно не одобряется, поскольку не гарантируется его работа в каждой системе. Сам не тестировал; но если в системе * NIX не установлена _24 _, _ 25_ или другая оболочка, system()
завершится ошибкой.
person
Frank
schedule
09.10.2010
int main(void)
илиint main()
. Тип возврата (int
) является обязательным в C99 или C11; компиляторы иногда позволяют вам опустить его, если вы не укажете, какой версии стандарта C придерживается ваш код. См. Также Чтоmain()
должно возвращать в C и C ++. - person Jonathan Leffler   schedule 05.02.2016