Операционная система UNIX. Руководство программиста




Как системные вызовы и библиотечные функции используются в C-программах - часть 2


Далее в разделе СИНТАКСИС приводится формальное описание функций. Из формального описания можно узнать:

  • Тип объекта, возвращаемого функцией.
  • В нашем примере, обе функции gets() и fgets(), возвращают указатель на символ.
  • Какой объект или объекты следует передавать функции при вызове.
  • Передаваемые объекты указываются в скобках после имени функции. Например, в нашем примере из формального описания следует, что функции gets() нужно передавать указатель на символ. Более подробная информация о передаваемых объектах приводится в разделе ОПИСАНИЕ.
  • Как эти объекты будут интерпретироваться функцией.

    Описание

    char *s;

    в функции gets() означает, что s будет рассматриваться как указатель на символ. Следует иметь в виду, что в языке C при передаче аргументов имя массива преобразуется в указатель на начало этого массива.

Мы рассмотрели простой пример описания функции gets(). Если Вы хотите проверить себя на более сложном примере, попытайтесь понять значение различных элементов описания функции fgets().

Рассматривая функцию fgets(), мы сталкиваемся еще с одной особенностью языка C. Третий аргумент этой функции - stream - есть файл с ассоциированными с ним буферами, описанный как указатель на производный тип FILE. Где определяется этот тип? Правильно! В файле <stdio.h>.

Завершая обсуждение способов вызова функций, описанных в Справочнике программиста, приведем пример фрагмента программы, в котором вызывается функция gets():

#include <stdio.h>

main () { char sarray [80];

for (;;) { if (gets (sarray) != NULL) { . . . /* Выполнить что-либо с цепочкой символов */ . . . } } }

Можно задать вопрос: "Откуда функция gets() считывает символы?". Ответ: "Со стандартного ввода". Под стандартным вводом обычно понимается то, что вводится с клавиатуры терминала, на котором была набрана команда, запустившая выполнение программы, или вывод другой программы, направленный функции gets(). То, что функция gets() считывает информацию со стандартного ввода, можно узнать из раздела ОПИСАНИЕ в статье Справочника. Действительно, там написано: "Функция gets читает символы из стандартного потока ввода...". Стандартный поток ввода определен в файле <stdio.h>.




Содержание  Назад  Вперед