Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

НОУ ІНТУЇТ | лекція | Використання аргументів командного рядка в С

  1. Теоретична частина
  2. Практична частина

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

Теоретична частина

Аргумент командного рядка - це інформація, яка вводиться в командному рядку операційної системи слідом за ім'ям програми [ 21.1 ].

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

Формально можна визначити наступний прототип функції 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. Приклад настройки і завдання аргументів командного рядка

Параметри або аргументи командного рядка повинні вводитися через прогалини. У разі, якщо параметр є рядком з пробілами, то його слід взяти в подвійні лапки.

Використання зазначеної можливості інтегрованого середовища розробки дозволяє зробити налагодження програми з аргументами командного рядка. Надалі завдання параметрів відповідно до Мал. 21.1 не обов'язково. Програма повинна сама підхоплювати аргументи командного рядка, визначені за допомогою утиліти cmd.exe (просто cmd) операційної системи.

Командний рядок операційної системи Windows можна запустити наступними способами:

  1. Пуск Програми (всі програми) стандартні Командний рядок
  2. Пуск виконати (Ввести) cmd

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


Мал. 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 <stdio.h> #include <conio.h> #include <stdlib.h> #include <malloc.h> #include <time.h> #include <locale.h> #include <string.h> #include <math.h> #include <float.h> #include <limits.h> 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 (& t)); // рандомизация випадкових чисел printf ( "\ n Введіть кількість рядків двовимірного масиву:"); in = scanf_s ( "% lf", & nd); 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", & md); 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", & factor); 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", & fd); 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", & posd); 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 (& fid, "format.txt", "w"))! = 0) {printf ( "\ n Файл для запису \" format.txt \ "не може \ бути відкритий. \ n Натисніть будь-яку клавішу:"); _getch (); exit (1); } Fprintf (fid, "\ r \ n \ t Приклад форматованого виведення \ числовий матриці: \ r \ n"); fprintf (fid, "\ r \ n Матриця розміру% dx% d з нормально \ розподілених випадкових чисел, \ r \ n \ помножених на число% g. Кількість цифр після \ десяткового дробу:% d \ r \ n \ Кількість позицій між числами:% d \ r \ n ", n, m, factor, f, pos); for (i = 0; i <n; i ++) {fprintf (fid, "\ r \ n"); for (j = 0; j <m; j ++) fprintf (fid, "% *. * f", in + pos, f, A [i] [j]); } Fprintf (fid, "\ r \ n"); printf ( "\ n Результат дивіться в файлі \" format.txt \ "\ n"); fclose (fid); } Else {printf ( "\ n Результат не може бути форматувати виведений \ n \ в текстовий документ або на консоль для заданого \ n \ кількості стовпців, величини поля між числами \ n \ і кількістю знаків після десяткового дробу. \ N"); printf ( "\ n Натисніть будь-яку клавішу:"); _getch (); exit (1); } Printf ( "\ n \ n ... Натисніть будь-яку клавішу:"); _getch (); return 0; }F", f, tmin); // int n, m, f, pos; // row, column, floor point, distance in = (strlen (smin)> strlen (smax)?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    Подготовка к ЕГЭ по математике
    Статьи Опубликовано: 05.10.2017 Подготовка к ЕГЭ по МАТЕМАТИКЕ. 1 часть. Эффективный курс подготовки. Вы находитесь на сайте www.ege-ok.ru - Подготовка к ЕГЭ по математике. Меня зовут Инна Владимировна

    Куда поступить с обществознанием, русским и математикой
    Статьи Опубликовано: 06.10.2017 Сдача ЕГЭ. Куда поступать? Обществознание считается одним из самых популярных предметов, которые выпускники сдают на ЕГЭ. Ввиду высокого рейтинга дисциплины Рособрнадзор

    Сайт Майер Елены - ЕГЭ по математике
    Планируется проведение двух отдельных экзаменов – базового и профильного. Кому сдавать базовый ЕГЭ по математике? Базовый ЕГЭ организуется для выпускников, изучающих математику для общего развития

    ГДЗ решебник по математике 4 класс
    Извините, тут пока ничего нет ((( Решебник по математике 4 класс (Истомина Н.Б.) – не просто возможность быстро выполнить домашнее задание для учащегося, но и способ разобраться в труднорешаемых задачах.

    ГДЗ по математике 1 класс Самсонова самостоятельные работы
    Решебник по математике за 1 класс автора Самсоновой Л.Ю. 2012 года издания. Данное пособие предлагает готовые решения на разнообразные упражнения, направленные на активизацию всего учебного процесса. Здесь

    Для этой работы нужна математика
    Слотов: 956 Рулеток: 7 Лицензия: Pragmatic Play, Microgaming, ELK, Yggdrasil, Habanero, Amatic, Isoftbet, Netent, Rival, Igrosoft, Quickspin. Игры: Автоматы, Покер, Рулетки. Всего 963 Отдача: 98% Бонус

    Веселые задачи по математике 2 класс
    Во время занятий для того, чтобы немного переключить внимание школьников, но при этом не уйти от предмета, можно давать шутливые задачи на сообразительность. Буду пополнять коллекцию таких задач. Дополнительная

    Функция экспонента в Excel
    Одной из самых известных показательных функций в математике является экспонента. Она представляет собой число Эйлера, возведенное в указанную степень. В Экселе существует отдельный оператор, позволяющий

    ЕГЭ по математике 2018
    ЕГЭ по математике, наравне с русским языком , – обязательный экзамен для сдачи выпускниками 11-х классов. По статистике он самый сложный. Мы предлагаем ознакомиться с общей информацией об экзамене и

    Секреты эффективной и быстрой подготовки ко второй части ОГЭ по математике.
    Уважаемые девятиклассники, настоящие или будущие! Часто от вас приходится слышать следующие вопросы. Легко ли подготовиться к заданиям второй части ОГЭ по математике? Сколько для этого понадобится


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: