Главная » Просмотр файлов » Г. Шилдт - Полный справочник по C++

Г. Шилдт - Полный справочник по C++ (1109478), страница 39

Файл №1109478 Г. Шилдт - Полный справочник по C++ (Г. Шилдт - Полный справочник по C++) 39 страницаГ. Шилдт - Полный справочник по C++ (1109478) страница 392019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 39)

Наиболее часто файлом считается физический файл, расположенный на диске. Именна такие файлы мы булем иметь в виду в ходе дальнейшего изложения. Прототип функции корен() имеет. следующий вид. й Рабе "бореп(попас спас *шп фтмл, сопвс спас "релснв) Здесь параметр имя файла представляет собой указатель на строку символов, которая задает допустимое имя файла и может включать в себя описание пути к нему. Строка. на которую ссылается указатель релгич, определяет предназначение файла. Допусти- мыс значения параметра режим представлены в табл.

9.2. Таблица 9.2. Допустимые значения параметра режим Значение Открыть текстовый файл для чтения Создать твкстовыи файл для записи Добавить записи в конец текстового файла Открыть бинарный файл для чтения Создать бинарный файл для записи Добавить записи в конец бинарного файла Открыть текстовый файл для чтения и записи Создать текстовый файл для чтения и записи Добавить записи в конец текстового файла или создать текстовый файл для чтения и записи Открыть бинарный Файл для чтения и записи Создать бинарный Файл для чтения и записи Добавить записи в конец бинарного файла или создать бинарный Файл для чтения и записи к+Ь а+Ь Как указывалось ранее, функция ворон() возвращает указатель файла.

Не следует изменять значение этого указателя в собственной программе. Если во время от.крытия файла произойдет ошибка, функция лорел( ) вернет нулевой указатель В приведенном ниже примере функция ворон() используется лля открытия файлз с именем ТЕВТ. Е11Е *бр; бр = борен("севе", "ы"); Этот фрагмент программы абсолютно верен, и все же файл л)ожно открыть намного грамотнее.

Например, так. *бр; зб ((бр = бореп("сева","ы"))==ьцъь)( ркйпсб("невозможно открыть Файл.~п')г ехз.г (1); Теперь можно обнаружить ошибку, возникшую при открьггии файла, например, попытку открыть файл, зашишенный от записи, или переполнение диска, и правильно Глава 9. Файловый ввод-вывод и используется соответствуюшим потоком при выполнении операций ввода-вывода. Выполнить эти операции без указателя фзйла невозможно. Чтобы объявить указатель фата, следует выполнить следуюшнй оператор. $ ЕП,Е *бр; на нее отреагировать.

В принципе, прежде чем приступать к выполнению операций ввода-вывода, следует всегда проверять, успешно лн выполнена функция Еореп(). Хотя большинство значений параметра режим имеют вполне очевидный смысл, некоторыс из них требуют дополнительных разъяснений. Если при попытке открыть файл только для пения выяснится, чзо такого файла на лиске нет, функция Еореп(] вернет признак ошибки. Если попытаться открыть несуществующий фаил лля добавления записей, он будет создан. Кроме лого, если для добавления открыть существующий файл, все новые записи будуг записаны в его конец. Исходное содержание файла останется неизменным Если несуц(ествуюший файл открывается для записи, он также создается.

Если для записи открывается сушествуюц(ий файл, его содержимое уничтожается и заменяется новыми данными. Разница между режимами г+ и в+ заключается в том, что при попытке открыть несуществующий файл в режиме к+ новый файл пе созлается, в отличие от режима в+. К тому же, если файл ранее существовал, то в режиме м+ его содержимое будез. уничтожено, а в режиме к+ — нет. Как следует из табл. 9.2, файл можно открыть как в текстовом, так и в бинарном режилю. Как правило, команды возврата каретки и прогона бумаги в текстовом режиме переводятся в символы перехода на новую строку.

При выводе все происходит наоборот: символы перехода на новую строку интерпретируются как команды перевода каретки и прогона бумаги. При работе с бинарными фаилами такие преобразования не выполняются. Количество одновременно открытых файлов определяется конспвпой жоршя мдх. Как правило, она равна 8, но ее точное значение следует покаюсь в документации, сопровожлаюшей компилятор. Закрытие файла Функция Ео1овв() закрывает поток, открытый ранее функцией Еореп(). Она записывает все оставшиеся в буфере данные в файл и закрывает его, используя команды операционнои системы. Ошибка, возникшая при закрытии файла, може~ породить множество проблем, начиная с потери данных и разрушения файлов и заканчивая непредсказуемыми послелствиями для программы.

Кроме того, функция Ео1оее() Освобождает упраяляюший блок фаила, связанного с потоком, позволяя использовать этот блок повторно. Операционная система ограничивает количество одновременно открытых файлов, поэтому, прежде чем открыть один файл, следует вскрыть другой, Прототип функции Ео1оее() вьплядит следующим образом. й 1пе Ес1оае(К1ЬЕ ")р) Здесь параметрУр представляет собой указатель файла, возвращенныи функцией Еорвп(). Если функция вернула нулевой указатель, значит, файл закрыт успешно.

Значение дог является признаком ошибки. Для распознавания и обработки возникших проблем можно использовать стандартную функцию Ееккоко. Как правило, функция Ео1оев() выполняется неверно, если диск был прежаевременно вынтт из лисковода или переполнен. Запись символа Для вывода символов предназначены две функции: рпео() и Ерпеео. (На самом деле рпео() — это макрос.) Эти эквивалентные функции просто сохраняют совместимость со старыми версиями языка С.

В книге используется макрос рпео(), хотя с таким же успехом можно было бы вызывать функцию Ерове() . Функция рпеоО записывает символ в файл, открытый с помощью функции еореп(). Прототип этой функции выглядит так. Часть (. Основы языка С++; подмножество С 5 1пс рисе(1пс ывявов, Р1ье 'Гп) Здесь параметр Гр представляет собой указатель файла, возврашеццый фуикцией (ерепО, а аргумспт сА является символом, поллежашим выводу.

Указатель фа(юа сообшает функции расе О, в какой именно файл следует произвести запись. Несмотря па то что параметр сй имеет тип зпе, в файл записывается лишь младший байт. Если функция рцсс0 выполнена успешно, она возврашает символ, записанный сю в файл. В противном случае опа возврашает константу еое.

Чтение символа Ввод символа осушествляется двумя эквивалентными функциями: деве о и Едесе () . Наличие одинаковых функций позволяет сохранить совместимость со старыми версиями языка С. В дальнейшем мы будем использовать лишь функцию дассо, которая реализована в зиле макроса, При желании можно применять и функцию едесе () . Фуикция веге() считывает символ из файла, открытого функцией дерево в режиме чтения.

Прототип функции дега(1 имеет следуюший вид. В ьпг дегс(ЯХЬЕ *)р) Здесь параметр Гр является указателем файла, возврац(ецпым функцией торец(). Функция деево возврашает целочисленную перемеыпую, младший баит которой содержит введенный символ. Если возникла ошибка, старший байт этой перемен~ юй равен пулю. Если при чтении обнаруживается конец файла, функция деве() возврашает коистш)ту еое. Следовательцо, лля считывания данных вплоть до конца файла можно применять следующий фрагмент программы.

) в ас ( сп = дегс(тр)в ыд11е(сп(=ЕОР)в Однако функция деве() возврашает константу еое и при возникновении ошибок. Для распознавания ошибки можно применять функцию Евккек() . Применение функций 1орепЦ, Яе1сЦ, рйсЦ и 1с!ове() Функции терапии, десс(), рпсс0 и Ее1еве() образуют минимальный набор процслур лля работы с файлами. Приведсииая ниже программа КТО0 иллюстрируе~ применение функций риса(), дерев() и Ес1ове().

Опа считывает символы с клавиатуры и записывает их в файл, пока пользователь пе введет символ д Имя файла задается в командной строке. Например, вызвав программу КТО0 с помошью команды ктор ткет, люжцо записать текст в файл с именем тевт. т* программа ктоп лля рабв ты с диском. */ тьпс1пде ввгг)то.п> Взпс1пбе <зев)11Ь.Ь> тпс гваьп(тпс атдс, сват "агду[)) 'тр спас с)ы 11(атдс[Г2) ( ртьпгь"("Еы забыли указать кмя Файла.ьп") ехьс (1); Глава 9.

Файловый ввод-вывод ьс((тр=ьореп(агдч[1), "н"))==и()Ь?,) ( ргьпСГ("Невозможно открыть Файл.~п")г ехьс(1); ((о ( сн = дееснаг(); риес(сн, ьр); юц11е (с?1 != '6') тс1озе(тр): гесихп 0; ) Программа ОТОа выполняет противоположные операции: она считывает произвольный текстовый файл и выводит его содержимое на экран. Она демонстрирует использование функции едеес () . У* Программа ПТОЯ считывает Файл и выводит его на экран. */ Ззпс1пс)е <зес)ьо.й> Оапс1ог)е <вег)11Ь. Ь> ьпс таьп(1пс агдс, снаг *агдч[)) ( ЯХВЕ *Хр; сцаг сйг 11(агдс!=2) ( ргапст("Вы забыли ввести имн файла.~п"); ехьс(1); ) ьт((ср=сореп(агдч[1), "г"))==НОВ() ( рг[пст("Невозможно открыть файл.~п")г ехьс<1); ) сн = десс(ьр); у' Считываем символ */ юи11е (сп!=ВОР) ( риьсйаг(сй); /* Выводим его на экран *Г сй = десс(йр); ) ьс1озе(гр); геспгп О; Чтобы выполнить тестирование этих программ, слелует сначала созлать текстовый файл с помощью программы КТОО, а затем считать его содержимое, используя программу ОТОа.

Характеристики

Тип файла
DJVU-файл
Размер
7,03 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6553
Авторов
на СтудИзбе
299
Средний доход
с одного платного файла
Обучение Подробнее