![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Операции с потоками при использовании библиотеки stdio.h.
Файловый ввод/вывод при использовании библиотеки stdio.h. состоит из трех основных шагов: открытие потока; ввод/вывод в поток; закрытие потока.
Открытие потока
Открытие потока включает следующие операции: 1. Объявление указателей на файловые потоки: FILE *fp1,*fp2; 2. Открытие файла и связывание его с указателем потока с помощью функции fopen: f1=fopen(²d:\\mydir\\myfile², ²w²); Эти операции можно объединить в одну: FILE *fp1=fopen(²d:\\mydir\\myfile², ²w²); Здесь первый параметр, строка – имя файла. Если имя файла включает имена папок, в которых он находится, то они отделяются двойным обратным слэшем \\. Второй параметр, строка – задает режим, в котором открывается файл: "r" – файл открывается для чтения; "w" – открывается пустой файл для записи (если файл существует, он стирается); "а" – файл открывается для добавления информации в его конец; "r+" – файл открывается для чтения и записи (файл должен существовать); "w+" – открывается пустой файл для чтения и записи (если файл существует, он стирается); "а+" – файл открывается для чтения и добавления информации в его конец. Режим открытия может также содержать символы t (текстовый режим) или b (двоичный режим), отличающиеся обработкой символов перехода на новую строку. По умолчанию файл открывается в текстовом режиме, при котором комбинация символов «возврат каретки» и «перевод строки» (0x13 и 0x10) при вводе преобразуются в одиночный символ перевода строки (при выводе выполняется обратное преобразование). В двоичном режиме эти преобразования не выполняются. Пример: FILE *f = fopen("d:\\cpp\\data", "rb+"); Открывается поток f связанный с двоичным файлом d:\\cpp\\data для чтения и записи 3. Проверка правильности открытия потока При успешном открытии потока функция возвращает указатель f на предопределенную структуру типа FILE, содержащую всю необходимую для работы с потоком информацию, или NULL в противном случае. Поэтому в программу обязательно добавляется код проверки правильности открытия потока, чтобы не было ²зависания² компьютера: FILE *f, *fo; if((f = fopen("d:\\c\\file.txt", "r")) == 0) {cout << "Ошибка открытия входного файла"; return 1;} В этом примере при неудачном открытии потока произойдет завершение выполнения функции, в которой открывается поток. Функция возвратит значение 1 с помощью оператора return 1;
Указатель f используется в дальнейших операциях с потоком. Его передают функциям ввода/вывода в качестве параметра. При открытии потока с ним связывается область памяти, называемая буфером. При выводе вся информация направляется в буфер и накапливается там до заполнения буфера или до закрытия потока. Чтение осуществляется блоками, равными размеру буфера, и данные читаются из буфера. Буферизация позволяет более быстро и эффективно обмениваться информацией с внешними устройствами. Следует иметь в виду, что при аварийном завершении программы выходной буфер может быть не выгружен, и возможна потеря данных. С помощью функций setbuf и setvbuf можно управлять размерами и наличием буферов. Существует пять предопределенных потоков, которые открываются в начале работы программы: стандартный ввод stdin(связан с клавиатурой), стандартный вывод stdout(связан с дисплеем), стандартный вывод сообщений об ошибках stderr(связан с дисплеем), стандартный дополнительный поток stdaux и стандартная печать stdprn. Эти указатели можно использовать в любой функции ввода/вывода там, где требуется указатель потока.
Закрытие потока
Поток закрывается либо при завершении программы, либо явным образом с помощью функции fclose: fclose(указатель на поток); Перед закрытием потока информация из связанных с ним буферов выгружается на диск. Рекомендуется всегда явным образом закрывать потоки, открытые для записи, чтобы избежать потери данных.
|
|||||
Последнее изменение этой страницы: 2021-11-27; просмотров: 59; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.110.86 (0.007 с.) |