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



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


Как правильно пользоваться системными вызовами и библиотечными функциями, объясняется в соответствующих статьях Справочника программиста. Чтобы чтение Справочника было наиболее эффективным, необходимо знать типичную структуру его статей. Рассмотрим, например, статью gets(3S).

GETS(3S) GETS(3S)
НАЗВАНИЕ
gets, fgets - чтение цепочки символов из потока
СИНТАКСИС
 

#include <stdio.h>

char *gets (s) char *s;

char *fgets (s, n, stream) char *s; int n; FILE *stream;

ОПИСАНИЕ
 

Функция gets читает символы из стандартного потока ввода stdin в область памяти, на которую указывает аргумент s. Чтение производится до тех пор, пока не встретится перевод строки или конец файла. Символ перевода строки отбрасывается, а прочитанная цепочка ограничивается нулевым байтом.

Функция fgets считывает (n-1) символов из потока ввода stream в область памяти, на которую указывает аргумент s. Чтение производится до тех пор, пока не встретится перевод строки (в отличие от gets он не отбрасывается) или конец файла. Прочитанная цепочка символов ограничивается нулевым байтом.

СМ. ТАКЖЕ

 

ferror(3S), fopen(3S), fread(3S), getc(3S), scanf(3S).

ДИАГНОСТИКА

 

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

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

Раздел СИНТАКСИС содержит информацию о том, как нужно обращаться к описываемым функциям из программы. Заметим, что в первой строке этого раздела записано:

#include <stdio.h>

Это означает, что программе, использующей функции gets() или fgets(), необходима информация из включаемого файла стандартного ввода/вывода. Обычно оператор #include помещается в начале исходного текста. Ниже будет приведена версия файла <stdio.h>, которую можно просмотреть, чтобы понять, что используется функциями gets() и fgets().




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