Я понимаю, что делают argv и argc и как они используются, но мне нужно их воссоздать. В C, как бы вы написали функцию, имитирующую их.
Как написать argv и argc
Ответы (4)
Вы просто создаете массив для хранения параметров, которые нужно передать как argv
, и соответственно устанавливаете argc
, что-то вроде;
int argc = 3;
char* argv[argc + 1];
argv[0] = "binary name";
argv[1] = "first parameter";
argv[2] = "second parameter";
argv[3] = NULL;
int result = main(argc, argv);
stdarg.h
- person Arpit; 07.10.2013
argc
и argv
используются, когда вы запускаете программу из командной строки или хотите передать программе некоторые переменные.argc
содержит количество аргументов, а argv
— массив указателей на аргументы, которые являются строками.< br> Эти аргументы для main
main(int argc, char** argv)
Синтаксис char** argv
объявляет argv
указателем на указатель на символ, то есть указатель на массив символов (строку символов) — другими словами, массив строк символов. Вы также можете написать это как char* argv[]
.
При запуске программы массив argv
содержит по порядку всю информацию о командной строке при вводе команды (строки выделяются пробелами), включая саму команду. Целое число argc
дает общее количество строк и, следовательно, равно количеству аргументов плюс один. Например, если вы набрали
a.out -i 2 -g -x 3 4
программа получит
argc = 7
argv[0] = "a.out"
argv[1] = "-i"
argv[2] = "2"
argv[3] = "-g"
argv[4] = "-x"
argv[5] = "3"
argv[6] = "4"
В C и C++ прототип функции main выглядит так:
int main(int argc, char *argv[]);
Вы не можете воссоздать их, но вы можете изменить их имена.
В вашем основном вы можете ввести int main(int numberOfArguments, char *arrayOfArguments[])
и использовать numberOfArguments
как argc
и arrayOfArguments
как argv
.
argv
иargc
просто магические переменные? Что-то вродеARGV
в Perl? - person P0W   schedule 07.10.2013argv
— это массив строк (массив указателей на символы), аargc
— это длина этого массива. Таким образом, их воссоздание — это просто создание массива строк. Для чего вы хотите использоватьargc
иargv
? - person Kninnug   schedule 07.10.2013