Как передать аргументы c в программу

Аннотация: В лекции необходимо изучить способы передачи аргументов командной строки операционной системы Windows в программу, в которой предусмотрено считывание количества аргументов и вывод имен этих аргументов с возможностью запуска приложений (аргументов).

Теоретическая часть

Аргумент командной строки – это информация , которая вводится в командной строке операционной системы вслед за именем программы [21.1].

В системных средах, поддерживающих язык программирования С, существует способ передавать в программу аргументы или параметры командной строки при запуске программы на выполнение [21.2]. Для этого в главную функцию main() включают два аргумента, обычно argc и argv. Первый (от argument count – счетчик аргументов) содержит количество аргументов командной строки , с которыми была запущена программа . Второй (от argument vector – вектор аргументов) указывает на массив символьных строк, содержащих сами аргументы, – по одному в строке. В общем случае имена аргументов могут быть произвольными.

Язык Си с нуля — Урок 54 — аргументы командной строки.

Формально можно определить следующий прототип функции main() с параметрами:

int main (int argc, char *argv[]);

Второй параметр функции main() выражает собой многоуровневую систему указателей. В связи с этим можно определить другой способ задания параметров функции main(), а именно

int main (int argc, char **argv);

Каждый указатель на значение типа char ссылается на одну из строк командной строки, при этом argv[0] указывает на имя команды (исполняемой программы), argv[1] – на первый аргумент командной строки, argv[2] – на второй аргумент и так далее [21.3].

В качестве принимаемых аргументов командной строки могут быть исполняемые файлы. Можно из программы запустить на выполнение другую программу, запустить новый процесс. Для этого существуют специальные функции библиотеки «C Run–Time Library Reference » системы Visual Studio (которую используем в качестве компилятора языка С ).

Командная оболочка операционной системы Windows использует интерпретатор команд cmd.exe, который загружает приложения и направляет поток данных между приложениями, для перевода введенной команды в понятный системе код. Консоль командной строки присутствует во всех версиях операционных систем Windows .

В среде разработки MS Visual Studio 2010 аргументы командной строки можно задать в самой среде, для чего следует произвести соответствующую настройку. Например, предположим, что мы хотим создать проект под именем tcmd, чтобы он принимал аргументы командной строки , например, » Example 1″ и E:forma.exe. Для этого после (или во время) создания проекта обратиться к закладке, показанной на рис. 21.1.

Пример настройки и задания аргументов командной строки


Рис. 21.1. Пример настройки и задания аргументов командной строки

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

argc argv c++ что это. Параметры функции main argc argv. Аргументы main. C ++ Урок #70

Использование указанной возможности интегрированной среды разработки позволяет произвести отладку программы с аргументами командной строки. В дальнейшем задание параметров в соответствии с рис. 21.1 не обязательно. Программа должна сама подхватывать аргументы командной строки , определенные с помощью утилиты cmd.exe (просто cmd) операционной системы.

Читайте также:
Как пользоваться портативными программами

Командную строку операционной системы Windows можно запустить следующими способами:

  1. Пуск toПрограммы (все программы) toСтандартные toКомандная строка
  2. Пуск toВыполнить to(ввести) cmd

Параметры, представленные на рис. 21.1, можно ввести из командной строки операционной системы Windows , как показано на рис. 21.2.

Пример ввода аргументов командной строки Windows


Рис. 21.2. Пример ввода аргументов командной строки Windows

Если подготовлена программа , в которой функция main() принимает два аргумента, то из командной строки можно передать, например, некоторые исполняемые файлы, такие как notepad.exe, winword.exe, чтобы можно было открыть «Блокнот» или документ » Word «.

Практическая часть

Пример 1. Напишите программу с аргументами командной строки, в которую передайте строки «Hello, world», «D:forma.exe», «MS Visual Studio 2010», «D:knapsack.exe», » команда cmd», где исполняемый файл «forma.exe» обеспечивает форматированный вывод случайных чисел, распределенных по нормальному закону, исполняемый файл «E:knapsack.exe» решает задачу о рюкзаке (см.Тему 18).

Аргументы командной строки определите в среде MS Visual Studio 2010. Прежде чем реализовать программный код решения примера, приведем программный код для исполняемого файла «forma.exe». Программный код форматированного вывода случайных чисел:

// Файл main.c программы forma (forma.exe) #include #include #include #include #include #include #include #include #include #include int main (void) < int i, j; double nd, md, fd, posd; double factor = 1.23; int n, m, f, pos; // row, column, floor point, distance int in = 0; double **A = NULL; double S = 0.0; double V1, V2, R1, R2; double tmax, tmin; char *smax, *smin; FILE *fid; errno_t err; time_t t; setlocale(LC_ALL, «rus»); setlocale(LC_NUMERIC, «uk»); srand((unsigned)time( // рандомизация случайных чисел printf(«n Введите количество строк двумерного массива: «); in = scanf_s(«%lf», if (in != 1) < printf(«n Ошибка ввода. Нажмите любую клавишу: «); _getch(); exit(1); >if ( nd < 1.0 || floor(nd) != nd ) < printf(«n Ошибка!

Количество строк массива должно быть натуральным числом.n Нажмите любуюу клавишу: «); _getch(); exit(1); >if (nd > (double)(INT_MAX/10000) ) < printf(«n Слишком большое число. Нажмите любую клавишу: «); _getch(); exit(1); >printf(» Введите количество столбцов двумерного массива: «); in = scanf_s(«%lf», if (in != 1) < printf(«n Ошибка ввода. Нажмите любую клавишу: «); _ getch(); exit(1); >if ( md < 1.0 || floor(md) != md ) < printf(«n Ошибка!

Количество столбцов массива должно быть натуральным числом.n Нажмите любуюу клавишу: «); _getch(); exit(1); >if (md > (double)(INT_MAX/10000) ) < printf(«n Слишком большое число. Нажмите любую клавишу: «); _getch(); exit(1); >printf(» Введите произвольное действительное число: «); in = scanf_s(«%lf», if (in != 1) < printf(«n Ошибка ввода.

Нажмите любую клавишу: «); _getch(); exit(1); >if ( factor > (double)(INT_MAX/1000) || factor < (double)(INT_MIN/1000)) < printf(«n Слишком большое число. Нажмите любую клавишу: «); _getch(); exit(1); >if ( factor < (10000.0*DBL_EPSILON ) factor >-(10000.0*DBL_EPSILON ) ) < printf(«n Слишком малое число. Нажмите любую клавишу: «); _getch(); exit(1); >printf(» Введите количество цифр после десятичной точки: «); in = scanf_s(«%lf», if (in != 1) < printf(«n Ошибка ввода.

Читайте также:
Программа чтобы менять голос для айфона

Нажмите любую клавишу: «); _getch(); exit(1); >if ( fd < 0.0 || fd >14) < printf(«n Количество цифр должно лежать в диапазоне [0; 14]. n Нажмите любую клавишу: «); _getch(); exit(1); >if ( floor(fd) != fd ) < printf(«n Количество цифр должно быть целым числом в диапазоне [0; 14].n Нажмите любую клавишу: «); _getch(); exit(1); >printf(» Введите минимальное количество позиций между столбцами массива: «); in = scanf_s(«%lf», if (in != 1) < printf(«n Ошибка ввода. Нажмите любую клавишу: «); _getch(); exit(1); >if ( floor(posd) != posd ) < printf(«n Количество позиций должно быть целым числом в диапазоне [1; 10].n Нажмите любую клавишу: «); _getch(); exit(1); >if ( posd < 0.0 || posd >10.0) < printf(«n Количество позиций должно лежать в диапазоне [1; 10].n Нажмите любую клавишу: «); _getch(); exit(1); >f = (int)fd; pos = (int)posd; n = (int)nd; m = (int)md; A = (double **)malloc(n*sizeof(double *)); for (i = 0; i < n; i++) A[i] = (double *)malloc(m*sizeof(double)); // Заполнение матрицы по нормальному закону // метод Марсальи-Брея S = 1.0; for (i = 0; i < n; i++) < for (j = 0; j < m; j++) < while (S >= 1.0) < R1 = (double) rand()/RAND_MAX; R2 = (double) rand()/RAND_MAX; V1 = 2.0*R1 — 1.0; V2 = 2.0*R2 — 1.0; S = (V1*V1 + V2*V2); >A[i][j] = factor * V1 * sqrt(-2.0*log(S)/S); S = 1.0; > > tmax = tmin = A[0][0]; for (i = 0; i < n; i++) for (j = 0; j < m; j++) if (tmax < A[i][j]) tmax = A[i][j]; for (i = 0; i < n; i++) for (j = 0; j < m; j++) if (tmin >A[i][j]) tmin = A[i][j]; smax = (char *)malloc((pos+f+(int)INT_MAX/10000 )*sizeof(char)); sprintf_s(smax, (pos+f+(int)INT_MAX/10000 — 1),»%0.*f»,f,tmax); smin = (char *)malloc((pos+f+(int)INT_MAX/10000 )*sizeof(char)); sprintf_s(smin, (pos+f+(int)INT_MAX/10000 — 1),»%0.*f»,f,tmin); // int n, m, f, pos; // row, column, floor point, distance in = (strlen(smin) > strlen(smax)? strlen(smin): strlen(smax)); if ((in+pos)*m < 80) < puts(«n Пример форматированного вывода числовой матрицы:»); for (i = 0; i < n; i++) < puts(«»); for (j = 0; j < m; j++) printf(«%*.*f», in + pos, f, A[i][j]); >puts(«»); > else if ((in+pos)*m < 1000) < if ( (err = fopen_s(format.txt», «w»)) != 0 ) < printf(«n Файл для записи «format.txt» не может быть открыт.n Нажмите любую клавишу: «); _getch(); exit(1); >fprintf(fid, «rnt Пример форматированного вывода числовой матрицы: rn»); fprintf(fid, «rn Матрица размера %dx%d из нормально распределенных случайных чисел,rn умноженных на число %g. Количество цифр после десятичной точки: %drn Количество позиций между числами: %drn»,n,m,factor,f,pos); for (i = 0; i < n; i++) < fprintf(fid, «rn»); for (j = 0; j < m; j++) fprintf(fid, «%*.*f», in + pos, f, A[i][j]); >fprintf(fid, «rn»); printf(«n Результат смотрите в файле «format.txt»n» ); fclose(fid); > else < printf(«n Результат не может быть форматированно выведенn в текстовый документ или на консоль для заданногоn количества столбцов, величины поля между числамиn и количеством знаков после десятичной точки.n»); printf(«n Нажмите любую клавишу: «); _getch(); exit(1); >printf(«nn . Нажмите любую клавишу: «); _getch(); return 0; >

Читайте также:
Программа развития района это

Источник: intuit.ru

Доступ к аргументам командной строки в C++

При запуске консольных приложений очень часто используются аргументы (опции) команды — они указываются через пробел после имени запускаемого файла. Например:

программа arg1 arg2 arg3

Рассмотрим, как передать аргументы команды в программу C++ и как получить доступ к аргумент командной строки из программы C++.

Чтобы в программе на C++ прочитать переданные аргументы, замените строку объявления главной функции:

int main ()

на следующую строку:

int main (int argc, char *argv[])

Переменная argc, которая представляет собой целое число (int), содержит количество переданных аргументов. А сами аргументы содержатся в элементах массива с обозначениями argv[1], argv[2], argv[3] и так далее.

Элемент массива argv[0] будет содержать имя самой программы.

Продемонстрируем это следующей простой программой:

#include #include using namespace std; int main (int argc, char *argv[])

Скомпилируйте и запустите её примерно следующим образом:

./a.out 12345 «Второй аргумент» ‘Последний аргумент’

Результат работы программы:

Всего передано аргументов: 4 Значение первого аргумента: 12345 Значение второго аргумента: Второй аргумент Значение третьего аргумента: Последний аргумент Имя файла программы: ./a.out

Аргументы командной строки разделяются пробелом, если вы хотите передать аргумент с пробелом, например «hello world», то используйте кавычки.

Смотрите также онлайн учебник «Основы С++».

Связанные статьи:

  • Почему в C++ для double в числе только 5 цифр после запятой (72.2%)
  • Как ввести в cin строки с пробелами в С++ (72.2%)
  • Сравнение char со строкой в C++ (72.2%)
  • Как в Bash реализовать «Нажмите любую кнопку для продолжения» (55.6%)
  • Как создавать диалоговые блоки в интерактивных shell скриптах (50%)
  • Что такое ZSH и почему его следует попробовать в качестве альтернативы Bash? (RANDOM — 5.6%)

Источник: zalinux.ru

Передача аргументов командной строки

Только начинаю изучать С++ и ещё не освоилась в Visual Studio. Хочу программе передать аргументы (строку, например), как это сделать в Visual Studio?

Отслеживать
51.1k 83 83 золотых знака 263 263 серебряных знака 501 501 бронзовый знак
задан 23 мар 2012 в 17:30
1 1 1 серебряный знак 2 2 бронзовых знака

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

введите сюда описание изображения

Спасибо всем:) ответ на мой вопрос на рисунке.

Отслеживать
ответ дан 3 июн 2015 в 14:00
21 2 2 бронзовых знака

  1. Выбрав проект в Обозревателе решения, в меню Проект выберите команду Свойства.
  2. Перейдите на вкладку Отладка.
  3. В поле Аргументы командной строки введите аргументы командной строки, которые будут использоваться.

Отслеживать
ответ дан 23 мар 2012 в 17:42
34.3k 25 25 золотых знаков 95 95 серебряных знаков 213 213 бронзовых знаков

  • c++
  • visual-studio
    Важное на Мете

Связанные

Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник: ru.stackoverflow.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru