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

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

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

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

Применение функции 1еоЩ Как указано выше, обнаружив конец файла, функция деес() возвращает константу еса. Однако эп) не самый лучший способ лля распознавания конца файла. Вопервых, операционная система может работать как с текстовыми, так и с бинарными файлами. Если файл открыт для бинарного ввода, из него может быть считано целое Часть [. Основы языка С~+: подмножество С число, равное константе еов. Следовательно, конец файла, распознаваемый функцией деес(), может не совпалать с реальным концом файла. Во-вторых, функция деес() возвращает константу еов не ~олько по достижении конца файла, но и при возникновении лгобой другой ошибки.

По этои причине константу кот невозможно иьпарнртировать однозначно. Для решения этой проблемы в языке С предусмотрена функция геог (), распознающая конец файла. Ее прототип имеет следующий вид. $ йпе а ?(Е1ЬЕ "Хр) Обнаружив конец файла, функция веоеО возвращает истинное значение, в противном случае она возвращает число О. Таким образом, приведенная ниже процедура считываез. бинарный файл, пока не обнаружит его конеш $ ыЬ11е('.гео?(гр)) си = денс(гр)г Разумеется, этот способ можно применять как для бинарных, так и лля текстовых файлов.

Следующая программа, копирующая .текстовые или бинарные файлы, иллюстрирует применение функции геог(). /* Копирование Файла. */ М?пс1и<)е <зсЖо.)н> В?пс1пг)е <зсг)11Ь.Ь> ьпс еаьп(?пс агдс, сцаг *агдт[]) ( Е1? Е *?П, *Осе; сиаг с?ы 11(агдс.'=3) ( ргьпс?("Ны забыли ввести имя Файла. 1п") ехьг.(1); 1г((?а=горев(агдч[1], "гЬ"))==Нива) ( ргьпс?("невозможно открыть исходный Файл.1п")г ех?г.(1); ) 1?((сце=йсрЕП(атдз[2], еаЬ")) == ?П)ХХ) рг1псг("невозможно открыть результирупжий ФайлМ") ех1с(1); /* Копирова1 не Файла и?п'.1е(!?ео?(ьп)) ( сн = дегс().п); 1?(!геог(?п)) росс(сц, оис); ) гс1озе(1п)г гс1озе (оие ) г геспгп Ог ) Глава 9. файловый ввод-вывой Работа со строками: функции 1риФВЦ и 1деФВЦ Кроме функций деес() и расс() файловая система языка С содержит функции ядеев() и ярцев (), выполняюшие чтение символьных строк из файла и запись их в файл соответственно.

Эти функции аналогичны функциям дево() и росс(), олнако они считывавхт и записывают строки, а не отдельные символы. Вот как выглядят их прототипы. * хпс гриса(сопяс сЬаг *строка, Рхье "/р); сЬаг *хдегя (снаг *строка, хпг длина, РХВЕ '~р); Функция Ермев() записывает в заланный поток строку, на которую ссылается указатель сгарока. При возникновении ошибки она возврашает константу еоР. Функция Едесв() считывает строку из указанного потока, пока не обнаружит символ перехода или не прочитает длина — ! символов. В отличие от функпии деес() символ перехода считается составной частью строки.

Результируюшая строка должна завершаться нулем. В случае успеха функция возвращает указатель на ввеленнухо строку, в проз.ианом случае она возврашает нулевой указатель. Следующая программа иллюстрирует работу функции яриея(). Она считывает строку с клавиатуры и записывает ее с файл с именем ТЕ$Т Для прекрхшения работы программы следует ввести пустую строку. Поскольку функция деев() не позволяет вводить символ перехода, при записи в файл он явно дописывается перед кажлой строкой. Это облегчает последуюшее чтение фаила.

Вхпс1п<(е <яг()хо. Ь> Схпс1п<)е <яМ1хЬ. Ь> Эхпс1и<)е <ясгхпд.Ь> хпс иахп(х"оИ) сЬаг ясг(80) РХГ Е "Хр; хх((хр = Хорев("тпят", "и"))==ЬЦЬВ) ргхпсг('*невозможно открыть фарп,1п"); екхе (1); ((о ( ргхпсе("Введите строку (ддя в>хода нажмите клавииу <ИЯТЕР>):хп'*) дедя(всг); ясгсас(ясг, "хп"); /* добавляем символ перехода */ Хрсся(ясг, Хр); ипх1е(*ясг! = ' 1п' ) у геспгп О; ) Функция ге)йлп((Ц Функция геихпх)() Устанавливает курсор в начало файла, ьзланного в качестве ее аргумента. Иными словами, она "перематывает" (геийпо) файл в начало. Ее прототип имеет следуюшии вил. К хгохг) геиьпс)(РХЬЕ /р) х Здесь параметр /р является допустимым указателем файла. Часть ).

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

*/ иц11е(!Йеот(йр)) ( Гдесв(эсг, 79, хр); ргхпег(эег); гессхп О; Функция 1еп ого Функция хеггогО определяет, возникла ли ошибка при работе с файлом. Ее прототип имеет следуюший вил. й хпс хеггог(Р1ье 'Ур); Здесь параметр /р является допустимым указателем файла. Функция возвращает исзиниое значение, если при выполнении операции возникла ошибка, в противном случае оиа возвращает ложное значение. Поскольку с каждой операцией пал файлом связан определенный набор ошибок, функцию Теггогш следует вызывать сразу же после выполпеиия операции, в проз.ианом случае ошибка может быть упушена. Следуюшая программа иллюстрируе~ работу функции веггог().

Оиа удаляет из файла символы табуляции, заменяя их соответствуюшилг количеством пробелов, которое залается константой тлв вхеЕ. Обратите виил1аиИЕ На то, что фУнкция Теггог() вызывается после выполнения кажлой файловой операции. При запуске программы укажизе в командной строке имена входного и выходного файлов. Глава 9. файловый ввод-вывод /* Грограмма эаменяет символы табуляции в текстовом Файле соответствующим количеством пробелов и проверяет ошибки */ ахпс1псе <в«б1о.Ь> Ф1пс1ис(е <в«611Ь.Ь> абей1пе тлВ БХЕЕ 8 Вх(ей1пе ХИ 0 ас)ей1пе СОТ 1 ззо16 ехт(хп« е)з хп« паз(п(хп« атос, сЬат *атдзз[]) РХХЕ "хп, *оп«з 1п« «аЬ, з.; снах- снз 11(атос(=3) ( ртхп«й("пвадез х)е«аЬ <1п> <ои«>(п")з ек1«(1); 11((1п = Хореп(ахдзз[1], "тЬ"))==ИЛ.Ь) ( рххп«й("Невовмот<нс открыть файл Ъв.Ы", атязз(1]) екз.«.(1)з з1((оп« = йоран(атдч[2], "ыЬ") )==(зЛЛХ) ( рх1п«8("Невозможно открыть файл Ъв.

1п", ахозз[1]) екз.«(1) з ) «аЬ = Сз бо сп = Се«с(1п)' з.й(йеххот(хп)) ехт(ХИ) /* Символ табунная заменяется соозтветствукжвзьз колияеством пробелов */ 11(сЬ=='1«') ( Тот(з.=-«аЬз з<8з хе+) ( рцз;с ( ' ', ои«) з 1х(хехтот(ои«) ) етт(ОСТ) з «аЬ = 0; е1ве ( рзз«с(с)з, ои«)з 1х(хеххох(оп«)) ехх(О(ЗТ)з «аЬ++з 11(«аЬ==ТЗХБ ЯХЕЕ) «аЬ = 0; 1х(сЬ=='*зп' [[ сЬ=='1т') «аЬ вЂ .. Сз ) жЬх1е(!Хвой(1п))з йс1ове(хп)з йс1ове(ои«)з те«птп Сз ) Часть [. Основы языка С++: подмноввство С чофс) етт(зпс е) ( ьй [е==1И) рхьпее! "Омибка при вводе. Хп"') е1ве ртьпст("Сиибка при выводе.'зп")з ех1с(1)з Удаление файла Функция телюче() удаляет укаэанный файл.

Ее прототип имеет следующий вил. В зпс тезлоче(сопят сЬат *мел фазиа) Если функция выполнена успешно, она возвращает нуль, в противном случае она возвращает ненулевое значение. Слелуюшая программа улаляет файл, заланный в командной строке. Однако сначала она дает пользователю возможность передумать. Такие утилиты могут быль полезнымн лля новичков.

/* Двойная проверка перед удалением файла. */ адпс1ис[е <вазе.Ь> В1пс1пбе <втг)11Ь.Ь> Взпс1ис[е <стуре.Ь> опт иа[п([пт ахдс, с)зах *ахдч(]) [ сЬат ест[ВО)г зт[атдсз=2) ( рхьптт("Командная строка: хетаве <Г11епаие>з~п") ехз.с(1) з ) рхьпст["Стереть Ъвт (Х/Б)з ", атдч[1])з деев[ест); 1В(сапррех(*ест)=='Х') Н (тевюче(атдч[1))) ( рхзпсЕ("Невозможно удалить файл.'зп")з ехтс[1)з ) тесптп оз Очистка потока Для того чтобы очистить поток вывода.

слелует применять функцию вдаль[), имеющую следующий прототип. й зпт ГВ1ивЬ(Р1ЬВ '/р) з Эта функция записывает содержимое буфера в файл, связанный с указателем Гр. Если вызвать функцию ЯЯ1мвЬО с нулевым аргументом, данные, содержащиеся в буферах, будут записаны во все файлы, открьпые для записи. В случае успешного выполнения функция вя1мвЬ[) возвращает О, в противном случае она возвращает константу воя. Глава 9.

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

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

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

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