Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 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; просмотров: 56; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.58.190.38 (0.006 с.) |