Стандартные функции ввода вывода языка C
В этой главе описаны стандартные С-функции ввода-вывода, т.е. функции, определенные стандартом С89 и добавленные стандартом С99. Функции, определенные в версии С89, поддерживаются и компиляторами C++ для обеспечения совместимости с языком С, поэтому их можно уверенно использовать в С++-программе. В языке С с функциями ввода-вывода связан заголовок <stdio.h>, а в C++ аналогичный заголовок называется <stdio>. Для простоты в этой главе будет использовано имя С-заголовка, но ссылки на <stdio.h> применимы и к заголовку <stdio>. Заголовок <stdio.h> определяет несколько макросов и типов, требуемых файловой системой в среде С. Тип FILE — самый важный; он используется для объявления указателя на файл. Двумя другими часто используемыми типами являются size_t и fpos_t, которые представляют собой некоторую разновидность целых без знака. Тип size_t определяет объект, который предназначен для хранения размера самого большого файла, разрешенного операционной средой. Тип fpos_t определяет объект, который может хранить всю информацию, необходимую для уникального определения каждой позиции внутри файла. Самым популярным макросом, определенным в этом заголовке, является макрос EOF, значение которого указывает на конец файла. Другие типы данных и макросы, определенные в заголовке <stdio.h>, описаны вместе с функциями, с которыми они связаны. Многие функции ввода-вывода при возникновении ошибки устанавливают встроенную глобальную переменную целого типа с именем errno. Ваша программа может проанализировать ее, чтобы получить более подробную информацию об ошибке. Значения, которые может иметь переменная errno, зависят от конкретной реализации компилятора. В системе ввода-вывода, действующей в среде С, используется понятие потока. Поток — это логическое устройство, связываемое с реальным физическим устройством, которое называют файлом, в момент его открытия. В С-системе ввода-вывода все потоки имеют одни и те же свойства, но файлы могут отличаться один от другого своими качествами. Например, дисковый файл позволяет произвольный доступ, а модем — нет. Поэтому С-система ввода-вывода обеспечивает определенный уровень абстракции между программистом и физическим устройством. Абстракция — это поток, а устройство — это конкретный файл. В таком случае, несмотря на различия, присущие реальным физическим устройствам, можно поддерживать согласованный логический интерфейс. Поток связывается с файлом посредством обращения к функции fopen(), и вся дальнейшая работа с потоком происходит благодаря использованию файлового указателя (который является указателем типа FILE *). В определенном смысле файловый указатель играет роль клея, который обеспечивает целостность всей системы. В начале работы программы автоматически открываются три заранее определенных потока: stdin, stdout и stderr. Их называют стандартными потоками ввода, вывода и ошибок соответственно. По умолчанию они связаны с консолью, но их можно перенаправить на устройство любого другого типа. В версии С99 введен квалификатор restrict, который применяется к некоторым параметрам нескольких функций, первоначально определенных в версии С89. При рассмотрении каждой такой функции будет приведен ее прототип, используемый в среде С89 (а также в среде C++), а параметры с атрибутом restrict будут отмечены в описании этой функции. Список функцийРабота с стандартными потоками
getchar — Возвращает следующий символ из стандартного потока stdin Работа с файловыми потоками
clearerr — Сбрасывает флажок ошибки связанный с потоком Работа с файловой системой
remove — Удаляет файл Другие функции
snprintf — Записывает определённое количество значений аргументов из заданного списка аргументов, в соответствии со строкой форматирования, в массив |
Нет комментариев. Оставить комментарий: |