Аргументы функции main

Аргументы функции main

При автоматизированном создании консольного приложения в языке программирования С++, автоматически создается главная функция очень похожая на эту:

 
 
int main(int argc, char* argv[])
{…}

Заголовок функции содержит сигнатуру главной функции main() с аргументами argс и argv.

Если программу запускать через командную строку, то существует возможность передать какую-либо информацию этой программе. Для этого существуют аргументы командной строки argc и argv[].

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

Параметр argv[] представляет собой массив указателей на строки. Через командную строку можно передать только данные строкового типа.

При запуске программы через командную строку Windows с передачей аргументов, командная строка будет иметь вид:

Диск:\путь\имя.exe аргумент1 аргумент2 …

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

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

Запуск программы из командной строки

Аргумент argv[0] содержит полное имя приложения:

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) 
{
  system("chcp 1251");
  system("cls");
  for(int i=0; i<argc; i++)
    cout << argv[i] << endl;
  cin.get();
  return 0;
}

Результат выполнения

Пример: вычисление произведения двух целых чисел.

В программе используется функция преобразования строки в целое число StrToInt() отсюда.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
using namespace std;
int StrToInt(char* s)
{
  int temp = 0; // число
  int i = 0;
  int sign = 0; // знак числа 0- положительное, 1 — отрицательное
  if (s[0] == '-')
  {
    sign = 1;
    i++;
  }
  while (s[i] >= 0x30 && s[i] <= 0x39)
  {
    temp = temp + (s[i] & 0x0F);
    temp = temp * 10;
    i++;
  }
  temp = temp / 10;
  if (sign == 1)
    temp = -temp;
  return(temp);
}
int main(int argc, char* argv[]) 
{
  int a = 0, b = 0;
  if (argc > 1)
    a = StrToInt(argv[1]);
  if (argc > 2)
    b = StrToInt(argv[2]);
  cout << a << "*" << b << "= " << a * b << endl;
  cin.get();
  return 0;
}

Запуск программы осуществляется как

Запуск программы из командной строки
Результат выполнения

Отладка программы с аргументами командной строки

Для передачи аргументов командной строки при отладке программы необходимо обратиться к меню Свойства проекта.

На вкладке Свойства конфигурации → Отладка выбрать Аргументы команды и задать их значения.

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

1 комментарий к “Аргументы функции main”

  1. Очень долго искал информацию, как задавать аргументы с пробелами (к примеру, пути к файлам). Добавьте, вдруг понадобится людям: Либо в кавычках: "путь\путь путь.файл.расширение", либо пробел оформляем управляющим символом: \пробел. И спасибо большое за статью.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх