Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
42
Добавлен:
02.05.2014
Размер:
543.23 Кб
Скачать

Билет 19

1. Аргументы функции main()

В языке C заданы два встроенных аргумента функции main: argc и argv.

Выглядит это так:

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

Аргумент argc типа integer содержит в себе количество аргументов командной строки.

Аргумент argv типа char - указатель на массив строк. Каждый элемент массива указывает на аргументы командной строки. Один параметр отделяется от другого пробелами.

  • argv[0] - полное имя запущенной программы

  • argv[1] - первая строка записаная после имени программы

  • argv[2] - вторая строка записаная после имени программы

  • argv[argc-1] - последняя строка записаная после имени программы

  • argv[argc] - NULL

В средах разработки фирмы Borland (Borland Builder C++, Borland C++ и т.п.) предусмотрен еще и третий аргумент env, который, так же как и argv является указателем на массив строк, но содержит установки среды:

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

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

Пример:

#include "stdio.h"

#include "stdlib.h"

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

int i;

printf("Количество аргументов командной строки %d \n", argc);

printf("Аргументы командной строки:\n);

for (i = 0; i < argc; i++)

printf("%s\n", argv[i]);

printf("\nАргументы состояния среды:\n");

for (i = 0; env[i] != NULL; i++)

printf("%s\n", env[i]);

return 0;

}

2. Операции Отношения

Операции отношения (сравнения) группируют слева направо, но этот факт не очень-то полезен: a < b < c не означает то, чем кажется.

выражение_отношения:

выражение < выражение

выражение > выражение

выражение <= выражение

выражение >= выражение

Операции < (меньше чем), > (больше чем), <= и >= все да­ют 0, если заданное соотношение ложно, и 1, если оно истинно. Тип результата int. Выполняются обычные арифметические преоб­разования. Могут сравниваться два указателя; результат зави­сит от относительного положения объектов, на которые указыва­ют указатели, в адресном пространстве. Сравнение указателей переносимо только если указатели указывают на объекты одного массива.

Билет 20

1. Стандартный ввод и вывод - функции getchar и putchar

Самый простой механизм ввода заключается в чтении по одному символу за раз из "стандартного ввода", обычно с терминала пользователя, с помощью функции getchar. Функция getchar() при каждом к ней обращении возвращает следующий вводимый символ. В большинстве сред, которые поддерживают язык "с", терминал может быть заменен некоторым файлом с помощью обозначения < : если некоторая программа prog использует функцию getchar то командная строка

prog<infile

приведет к тому, что prog будет читать из файла infile, а не с терминала. Переключение ввода делается таким образом, что сама программа prog не замечает изменения; в частности строка"<infile" не включается в командную строку аргументов в argv. Переключение ввода оказывается незаметным и в том случае, когда вывод поступает из другой программы посредством поточного (pipe) механизма; командная строка

otherprog ! prog прогоняет две программы, otherprog и prog, и организует так, что стандартным вводом для prog служит стандартный вывод otherprog. Функция getchar возвращает значение eof, когда она попадает на конец файла, какой бы ввод она при этом не считывала. Стандартная библиотека полагает символическую константу eof равной -1 (посредством #define в файле stdio.h), но проверки следует писать в терминах eof, а не -1, чтобы избежать зависимости от конкретного значения. Вывод можно осуществлять с помощью функции putchar(c), помещающей символ 'с' в "стандартный ввод", который по умолчанию является терминалом. Вывод можно направить в некоторый файл с помощью обозначения > : если prog использует putchar, то командная строка

prog>outfile

приведет к записи стандартного вывода в файл outfile, а не на терминал.

Соседние файлы в папке Програмки на C++