Читать интересную книгу Основы программирования в Linux - Мэтью Нейл

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 48 49 50 51 52 53 54 55 56 ... 324

Далее приведена синтаксическая запись функции:

<b>#include &lt;stdio.h&gt;</b>

<b>int fflush(FILE *stream);</b>

fseek

Функция fseek — это эквивалент для файлового потока системного вызова lseek. Она задает в stream позицию для следующей операции чтения этого потока или записи в него. Значения и смысл параметров offset и whence такие же, как у ранее описанных одноименных параметров вызова lseek. Но там, где lseek возвращает off_t, функция fseek возвращает целое число: 0, если выполнилась успешно, и -1 при аварийном завершении с ошибкой, указанной в переменной errno. Какое поле деятельности для стандартизации!

Далее приведена синтаксическая запись функции:

<b>#include &lt;stdio.h&gt;</b>

<b>int fseek(FILE *stream, long int offset, int whence);</b>

fgetc, getc и getchar

Функция fgetc возвращает из файлового потока следующий байт как символ. Когда она достигает конца файла или возникает ошибка, функция возвращает EOF. Для того чтобы различить эти два случая, следует применять функции ferror или feof.

Далее приведена синтаксическая запись функций:

<b>#include &lt;stdio.h&gt;</b>

<b>int fgetc(FILE *stream);</b>

<b>int getc(FILE *stream);</b>

<b>int getchar();</b>

Функция getc эквивалентна fgetc за исключением того, что может быть реализована как макрос. В этом случае аргумент stream может определяться несколько раз, поэтому он лишен побочных эффектов (например, не затронет переменные). К тому же вы не можете гарантировать возможности применения адреса getc как указателя функции.

Функция getchar эквивалентна вызову функции getc(stdin) и читает следующий символ из стандартного ввода.

fputc, putc и putchar

Функция fputc записывает символ в файловый поток вывода. Она возвращает записанное значение или EOF в случае аварийного завершения.

<b>#include &lt;stdio.h&gt;</b>

<b>int fputc(int с, FILE *stream); int putc(int c, FILE *stream); int putchar(int c);</b>

Как и в случае функций fgetc/getc, функция putc — эквивалент fputc, но может быть реализована как макрос.

Функция putchar — то же самое, что вызов putc(с, stdout), записывающий один символ в стандартный вывод. Имейте в виду, что функция putchar принимает, а функция getchar возвращает символы как данные типа int, а не char. Это позволяет индикатору конца файла (EOF) принимать значение -1, лежащее вне диапазона кодов символов.

fgets и gets

Функция fgets читает строку из файла ввода stream.

<b>#include &lt;stdio.h&gt;</b>

<b>char *fgets(char *s, int n, FILE *stream);</b>

<b>char *gets(char *s);</b>

Функция fgets пишет символы в строку, заданную указателем s, до тех пор, пока не встретится новая строка, либо не будет передано n-1 символов, либо не будет достигнут конец файла. Любая встретившаяся новая строка передается в строку, принимающую символы, и добавляется завершающий нулевой байт . Любой вызов передает максимум n-1 символов, т.к. должен быть вставлен нулевой байт, обозначающий конец строки и увеличивающий общее количество до n байтов.

При успешном завершении функция fgets возвращает указатель на строку s. Если поток указывает на конец файла, она устанавливает индикатор EOF для потока и возвращает пустой указатель. Если возникает ошибка чтения, fgets возвращает пустой указатель и устанавливает значение переменной errno, соответствующее типу ошибки.

Функция gets аналогична fgets за исключением того, что она читает из стандартного ввода и отбрасывает любые обнаруженные обозначения новой строки. Функция добавляет завершающий нулевой байт в принимающую строку.

Примечание

Учтите, что функция gets не ограничивает количество символов, которые могут передаваться, поэтому она может переполнить свой пересылочный буфер. По этой причине вам следует избегать применения этой функции и заменять ее функцией fgets. Многие проблемы безопасности порождены функциями в программах, сделанных для переполнения буфера тем или иным способом. Это одна из таких функций, поэтому будьте осторожны!

Форматированные ввод и вывод

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

printf, fprintf и sprintf

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

1 ... 48 49 50 51 52 53 54 55 56 ... 324
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Основы программирования в Linux - Мэтью Нейл.

Оставить комментарий