Основы программирования в Linux
Часть 52 из 324 Информация о книге
Далее приведена синтаксическая запись функции:
<b>#include <stdio.h></b><b>int fflush(FILE *stream);</b>fseek
Функция
— это эквивалент для файлового потока системного вызоваfseek. Она задает вlseekпозицию для следующей операции чтения этого потока или записи в него. Значения и смысл параметровstreamиoffsetтакие же, как у ранее описанных одноименных параметров вызоваwhence. Но там, гдеlseekвозвращаетlseek, функцияoff_tвозвращает целое число: 0, если выполнилась успешно, и -1 при аварийном завершении с ошибкой, указанной в переменнойfseek. Какое поле деятельности для стандартизации!errnoДалее приведена синтаксическая запись функции:
<b>#include <stdio.h></b><b>int fseek(FILE *stream, long int offset, int whence);</b>fgetc, getc и getchar
Функция
возвращает из файлового потока следующий байт как символ. Когда она достигает конца файла или возникает ошибка, функция возвращаетfgetc. Для того чтобы различить эти два случая, следует применять функцииEOFилиferror.feofДалее приведена синтаксическая запись функций:
<b>#include <stdio.h></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 <stdio.h></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) принимать значение -1, лежащее вне диапазона кодов символов.EOFfgets и gets
Функция
читает строку из файла вводаfgets.stream<b>#include <stdio.h></b><b>char *fgets(char *s, int n, FILE *stream);</b><b>char *gets(char *s);</b>Функция
пишет символы в строку, заданную указателемfgets, до тех пор, пока не встретится новая строка, либо не будет переданоsсимволов, либо не будет достигнут конец файла. Любая встретившаяся новая строка передается в строку, принимающую символы, и добавляется завершающий нулевой байтn-1. Любой вызов передает максимум\0символов, т.к. должен быть вставлен нулевой байт, обозначающий конец строки и увеличивающий общее количество до n байтов.n-1При успешном завершении функция
возвращает указатель на строкуfgets. Если поток указывает на конец файла, она устанавливает индикаторsдля потока и возвращает пустой указатель. Если возникает ошибка чтения,EOFвозвращает пустой указатель и устанавливает значение переменнойfgets, соответствующее типу ошибки.errnoФункция
аналогичнаgetsза исключением того, что она читает из стандартного ввода и отбрасывает любые обнаруженные обозначения новой строки. Функция добавляет завершающий нулевой байт в принимающую строку.fgetsПримечаниеУчтите, что функция
не ограничивает количество символов, которые могут передаваться, поэтому она может переполнить свой пересылочный буфер. По этой причине вам следует избегать применения этой функции и заменять ее функциейgets. Многие проблемы безопасности порождены функциями в программах, сделанных для переполнения буфера тем или иным способом. Это одна из таких функций, поэтому будьте осторожны!fgetsФорматированные ввод и вывод
Для создания вывода управляемого вида существует ряд библиотечных функций, с которыми вы, возможно, знакомы, если программируете на языке С. К ним относятся функция
и родственные функции для вывода значений в файловый поток, а такжеprintfи другие функции для чтения значений из файлового потока.scanfprintf, fprintf и sprintf
Семейство функций
форматирует и выводит переменное число аргументов разных типов. Способ их представления в потоке вывода управляется параметромprintf, являющимся строкой с обычными символами и кодами, называемыми спецификаторами преобразований, указывающими, как и куда выводить остальные аргументы.format