Аргументов argc
и argv
основной функции используются для доступа строковых аргументов, передаваемых в программу при ее запуске. argc
- количество переданных аргументов. Например, при запуске как это - ./myprogram arg1 arg2 arg3
, argc
будет иметь значение 4. Это связано с тем, что вместе с строками, переданными пользователем в имени программы, также передается. То есть argv[0]
указывает на строку myprogram
, argv[1]
указывает на arg1
и т. Д. Чтобы получить n-й аргумент, вы должны получить доступ к argv[n + 1]
.
Зная это, чтобы сделать копию первого аргумента можно сделать следующим образом
char * s = malloc(strlen(argv[1]) + 1);
strcpy(s, argv[1]);
Однако я бы посоветовал убедиться, что аргумент вы хотите не указывает на NULL перед копированием его. Здесь argc удобен. Перед доступом к argv[1]
я бы проверил, argc >= 2
.
Существует гораздо лучшее объяснение здесь http://crasseux.com/books/ctutorial/argc-and-argv.html или здесь http://www.cprogramming.com/tutorial/c/lesson14.html
Edit: Помните, чтобы освободить памяти, выделенной с помощью free
например. free(s)
.
Введите 'strdup()' (POSIX). Или 'char arr [strlen (argv [1]) + 1];' и 'strcpy (arr, argv [1])' ... –