#c
#c
Вопрос:
Я изучаю программирование на C, я написал пример кода для приема параметров из терминала и распечатки аргументов.
Я вызываю программу следующим образом: ./myprogram 1
Я ожидал, что 1 будет распечатан для длины аргумента вместо 2. почему это так? После аргумента «1» не было интервала
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
printf("%d", argc);
return EXIT_SUCCESS;
}
Ответ №1:
Первый аргумент — argv[0]
это имя, с которым была вызвана программа. Итак, есть два аргумента, а второй — argv[1]
«1».
Редактировать
Редактирование, чтобы прояснить: argc
всегда должно быть проверено. Как бы это ни было необычно, совершенно законно argc
, чтобы быть 0.
Например, в Unix execvp("./try", (char **){NULL});
это законно.
Комментарии:
1. @Dr Deo Не всегда, я думаю, что C99 поддерживает концепцию программы без каких-либо аргументов.
2. @cnicutar — C 89 разрешено
int main()
вместоint main(int argc, char **argv)
Ответ №2:
«./myprogram» считается первым аргументом.