Г. Шилдт - Полный справочник по C++ (1109478), страница 104
Текст из файла (страница 104)
Поскольку все символьные аргументы преобразуются в целочисленныи тнп, в качестве ар~умен~он функции дриес() можно использовать символы Если аргумент имеет целын тип, его старший байт игнорируется. В случае успешного выполнения функция дриес() возвращает количество считанных символов, в противном случае она возвращает константу еод.
Если файл открыт в бинарном режиме, константа еоР может представлять собой корректный символ, поэтому в этом случае для распознавании ошибки следует вызывать функцию декхот() . Зависимые функции: ддеес(),хореи(), дрккпед(), дкеед() и дех1ее(). Функция 1роЬ *, * ()1пс1ис(е <свес)1о> 1пс гриса(попас снах «згг, Ртье *пггам); Функция дрикв() записывает в указанный поток содержимое строки, на которую ссылается указатель дг.
Нулевой символ, служащий индикатором конца файла, в поток не записывается. В случае успеха функция крисе() возвращает положительное число, а в противном случае — константу еоР. Если поток открыт в текстовом режиме„может происходить преобразонание некоторых символов. Это значит, что олнозначного соответствия между строкой и файлом не существует. В двоичном режиме подобные преобразования не выполняются, и строка точно соответствует солержимому файла. Зависимые функции: ддеев(), деев(), риев(), дрх1пед() и двсепд() . Функция йеад И)пс1и()е <сяМ(о> а1зе с 1геад(ио1с) «Мф; вззе с псе, в1ае с салаг, Ртье *гагеам) Функция дхее((() считывает из потока зггеаа~ соим объектов, каждый из которых имеет размер зле байтов, и записывает их в массив, адресуемый указателем ааГ Файловый курсор увеличивается на число, равное количеству считанных символов. Функция дкее((() возвращает количество действительно считанных символов.
Если из потока считаны не все ожидаемые символы, значит, либо произошла ошибка, либо обнаружен конец файла. Для анализа ситуации следует вызвать функцию деох() или декхок(). Если поток открыт в ~екстовом режнл(е, может гцюисходить преобразование некоторых символов. Например, символ перехода на новую строку может преобразовываться в комбинацию колов возврата каретки и перевода строки. Зависимые функции: дее1ке(), кореи(), двсвпд(), ддеес() и деке().
Функция $геореп ()1пс1иде <свссйо> Р1ье «бхеореп(сопят снах «/)ьннг, сопят с)заг «мгле, Ртье «зггеа~п) Часть 1)). Библиотека стандартных функций Функция лкеореп() связывает сушествуюший поток с другим файлом. Имя нового файла задке~ел параметром улагле, режим доступа — параметром тгн(е, а перенаправлясмый поток — указателем зггеалс Параметр л(оде принимает те же значения, что и в функции сорепО. При вызове функция ккеореп() сначала пытается закрыть файл, связанный с указателем з(геаль Если эта попытка оказалась неудачной, функция ггеарелО пытается открьпь другой файл. В случае успешного выполнения функция дквореп() возвращает указатель зггеагл на открытый поток, в противном случае она возврагдает нулевой указа~ель. Функция дкеореп() в основном используется лля перенаправления системных потоков вес(1п, всаомс и вс((вкк на другие файлы.
Зависимые функции: Кореп() и ке1ове(). Функция 1всеп1 $1пс1ис)е <свЫ(о> (пе ГвсалТ(РХЬК *Пгета, согак с)так "Галлам ...) Функция квеапс() аналогична функции воапс(), за исключением того, что она считывает информацию из потока, заданного указателем векеап, а не из стандартного потока еЬйкп. Подробности изложены в разделе, посвяшенном функции веапд. Функция квеапкО возврашает количество аргументов, которым действи~ельно присвоены значения.
Пропушенные поля в это число не входят Если функция возвращает константу кор, значит, еше до первого присваивания произошла ошибка. Зависимые функции: веапс() и сркьпес(). Функция Веем * я1лс1цг)е <сакс)1о> 1лс гвен)с(Р1ЬК *лгеаеп 1опд офеп )лт. олею); Функция двое)<() устанавливает позицию файлового курсора, связанного с потоком зггеагл, в соответствии со значениями параметров афЫ и опт()с Она предназначена для обеспечения произвольного доступа к файлу при выполнении операций ввода-вывода.
Параметр о(Гм( залае.г количество байтов, на которое следует сместить курсор по отношению к позиции, заданной параметром ащ(л. Значение параметра опя(л должно определяться одним из следуюших макросов, определенных в заголовке <овеа1о>. Смещение отсчитывается от начала файла. Смещение отсчитывается от текущей позиции. Смещение отсчитывается от конца файла. вквк вкт викк сек викк кио Глава 25. Функции ввода-вывода языка С В случае успешного выполнения функция возврашает нуль, в противном случае— ненулевое значение. Функцию двое)с() можно использовать для перемешения файлового курсора по всему файлу Кроме того, файловый курсор можно устанавливать на позиции, находяшиеся после конца файла.
Однако попытка установить файловый курсор на позицию, нахоляшуюся перед началом файла, приводит к ошибке. Функция квееи() стирает признак конца файла, связанного с указанным потоком. Более того, она аннулирует любой символ, ранее возвращенный в этот поток функцией мпяеео О.
Зависимые функции: сее11(), кем1пгт(), серел(), свекров() и Квесров(). Функция Ье$ров (((пс1иде <свес)1о> зпс «вееров(Р1ье *игеат, сопла «роа с *роз(г(«ю); Функция двееров < ) перемешает файловый к)рсор в точку, заданную объектом, на который асылается указатель роюдол. Это значение должно быть предварительно получено с помошью вызова функции гдееров(). После выполнения функции ддееров() признак конца файла сбрасывается. Кроме того, она аннулирует любой символ, ранее возврашенный в этот поток функцией ппдеес () .
Если вызов функции лвееров() завершен неудачно, возврашается ненулевое число, в случае успеха функция возврашает нуль. Завиаимые функции: ддееров(), Двеек() и Дее11(). Функция йеИ ((1пс1пс)е <сасЖо> 1опд «се11(Р1ье *и<<ам)г Функция яее11() возврашает текушее положение файлового курсора, связанного с потоком игеаьь Для двоичных потоков зто значение равно количеству байтов между курсором и началом файла. Для текстовых потоков возврашаемое значение может не иметь определенного смысла, если оно не является аргументом функции двее)а<), поскольку в текстовом режиме может происходить преобразование некоторых аимволов, например, символ перехода на новую строку может преобразовываться в комбинацию кодов возврата каретки и перевода строки.
Эти преобразования искажают реальный размер файла. При возникновении ошибки функция Дее11() возвраШает число -1. Зависимые функции: явееи() и ддееров<). Функция Фигуре ((1па1иа)е <овса)1о> въае с сиг1се(аспас чоЫ *Ьи); а(ае с п«е, в1ае С сочен Р1ЬЕ *Пгеат); Функция дегяее<) ЗаПИСЫВаст В ПОТОК жгЕаГа Массив, состояШий из соиги объектов, каждый из которых имеет размер з(ге байтов. Массив адресуется указателем Ь4. Файловыи курсор увеличивается на количество записанных символов.
Функция дегяее() возврашает количеатво реально записанных объектов. Если функция выполнена успешно, это количеатво равно ожилаемому. Если количество записанных обьекгов меньше ожидаемого, возникает ошибка. Зависимые функции: ггее<((), гвевпг(), десс() и греге<). Функция яе1с ((Ьпс1иое <сваг)1о> Ьпа дега(Р1ЬЕ *весам) Функция десс() возвращает слелуюший символ, считанный из входного потока, и увеличивает файловый курсор на единицу.
Символ считывается как значение типа ипвддпеб снег и преобразуется в целое 'лало. При обнаружении конца файла функция деес() возврашает константу еож Поскольку значение еог является целым числом, при работе с бинарными файлами сле- Часть (й. Библиотека стандартных функций дует использовать функцию деоя(). Если функция деке(> обнаруживает ошибку, она также возврашает константу воя. При работе с бинарными файлами для анализа ошибок следует применять функцию деггог() . Функции деев() и ддеее() идентичны. В большинстве реализаций функция деев () просто определяется с помощью следующего макроса. й Вс)вс1пе деес(бр» деес(ср) В этом случае макрос доте() заменяется вызовом функции ддесс(). Зависимые функции: дриго(), ддеее(), рисе(> и дерев().
Функция Яе1спаг Ю>пс1иде <свеЖо> зпе деес)заг(чоЫ>; Функция двееиаг() возвращает следующий символ, считанный из входного потока ве61п. Символ считывается как значение типа впв1дпвб еЬаг и преобразуется в целое число. при обнаружении конца файла функция деесиаг( > возвращает константу воя, если функция деев>заг() обнаруживает ошибку, она также возврашает константу вою В большинстве реализаций функция деке)заг( > определяется как макрос.
Зависимые функции: дриго(),ядвео(), рисе(> и яорвп(>. Функция ЯеЬ 1 * Мьпс1цс>е <свес>1о> сваг *деев(с)заг *пг): Функцияядвев() считывает символы из потока веюп и помешает их в символьный массив„на который ссылается указатель жг. Символы считываются ло тех пор, пока не встретится символ перехода на новую строку либо признак конца файла. Символ перехода на новую строку не сохраняется и преобразуется в нулевой байт, служаший признаком конца строки.
В случае успеха функция двсв() возврашает указатель з(г, а при неудаче — нулевой указатель. Если при чтении символов происхолит ошибка, содержимое массива, адресуемого указателем жг, становится неопределенным. Поскольку нулевой указатель возврашается и при возникновении ошибки, и при достижении конца файла, чтобы выяснить, что же произошло на самом деле, необходимо использовать функции геок(> или геггог(>. Функция деев() не ограничивает количество считываемых символов, поэтому может возникнуть переполнение массива, алресуемого указателем аг. Таким образом, функция деев() потенциально опасна.
Зависимые функции: ярцев(>, ддеее(), лдвев() и роев(>. Функция реггог ((тпс1ис>в <свсЖо> чо1<> рвггог(сопвс сваг *Пг>; Функция реггог() преврашает значение глобальной переменной вггпо в строку и записывает ее в поток всаегг. Если значение указателя аг не является нулевым, он записывается первым, а за ним после точки выводится сообщение об ошибке. Глава 25. Функции ввода-вывода языка С ФУНКЦИЯ РППЫ К пс1ос(е <сакс)ьо> (пс рг(псс(сопвг с)зат /опла(, ...) (рункгп1я рк1псКО записывает в поток всбоцс свои аргументы в соответствии форматной строкой)опяап Строка,тепло)мажет содержать элсл1снты двух вилов. К первому относятся символы, подлежащие выволу на экран. Ко второму виду — спсцификаторы формата, определяющие способ прелставлсния аргументов на экране. Спсцификаторы формата нашнюогся со знака процента, за которым следует код формата.