Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Основные алгоритмы работы с файлами. Порядок работы с текстовыми и двоичными файлами аналогичен.

Поиск

Порядок работы с текстовыми и двоичными файлами аналогичен.

Для записи данных в файл нужно выполнить:

1. Описать файловую переменную типа FILE *.

2. Открыть файл для записи с помощью функции fopen.

3. Записать данные в файл с помощью функции fprintf или fwrite.

4. Закрыть файл с помощью функции fclose.

Для чтения данных из файла нужно выполнить:

1. Описать файловую переменную типа FILE *.

2. Открыть файл для чтения с помощью функции fopen.

3. Считать данные из файла с помощью функции fscanf или fread.

4. Закрыть файл с помощью функции fclose.

Пример 6. Написать программу, реализующую подсчет количества символов в заданном тексте и файловый ввод-вывод данных. Работа программы должна включать ввод пользователем с клавиатуры имен входного и выходного файлов. Результат работы программы сохраняется в выходном файле, а также выводится на экран.

#include "stdafx.h"#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ int sum=0; char c,file1[10],file2[10]; FILE *t,*g; printf("Введите имя входного файла: "); scanf("%s",file1); printf("Введите имя выходного файла "); scanf("%s",file2); t=fopen(file1,"r"); g=fopen(file2,"w"); printf("\nСодержимое входного файла %s:\n",file1); while(!feof(t)) { c=getc(t); if (c!=10&& c!=-1)     //символы конца строки и конца файла не считаются sum++; printf("%c", c); } fprintf(g,"%d",sum); printf("\nКоличество символов в тексте входного файла равно %d",sum); fclose(t); fclose(g); system("pause"); return 0;}

Обработка файлов в потоковом режиме.

Для работы с файлами используются специальные типы данных, называемые потоками.

Поток ifstream служит для работы с файлами в режиме чтения.

Поток ofstream служит для работы с файлами в режиме записи.

Поток fstream служит для работы с файлами в режиме как чтения, так и записи.

В программах на C++ при работе с текстовыми файлами в потоковом режиме необходимо подключать библиотеки iostream и fstream.

Функция открытия файла

Для того чтобы начать работать с текстовым файлом, необходимо описать переменную типа ofstream.

Например, с помощью оператора

ofstream F;

будет создана переменная F для записи информации в файл.

На следующем этапе файл необходимо открыть для записи. В общем случае оператор открытия файла будет иметь вид:

F.open("file", mode);

где F – переменная, описанная как ofstream;

file – полное имя файла на диске;

mode – режим работы с открываемым файлом.

Существуют следующие режимы для открытия файла.

Режимы работы с файлом при открытии

Режим Описание
ios::in открыть файл в режиме чтения данных, этот режим является режимом по умолчанию для потоков ifstream
ios::out открыть файл в режиме записи данных, этот режим является режимом по умолчанию для потоков ofstream
ios:: app открыть файл в режиме записи данных в конец файла
ios:: ate передвинуться в конец уже открытого файла
ios::trunc очистить файл, это же происходит в режиме ios::out
ios::nocreate не выполнять операцию открытия файла, если он не существует
ios::noreplace не открывать существующий файл
ios:: binary открыть двоичный файл

Параметр mode может отсутствовать, в этом случае файл открывается в режиме по умолчанию для данного потока:

ios::in – для потоков ifstream,

ios::out – для потоков ofstream.

После удачного открытия файла (в любом режиме) в переменной F будет храниться 1 (true), в противном случае 0 (false). Это позволит проверять корректность операции открытия файла.

Если открытие файла завершилось неудачей, объект, соответствующий потоку, будет возвращать значение 0:

if (!ofs){   cout << "Файл не открыт\n"; }

Проверить успешность открытия файла можно также с помощью функции is_open(), имеющей следующий прототип:

Функция возвращает 1, если поток удалось связать с открытым файлом. Например,

if (!ofs.is_open())   cout << "Файл не открыт\n";

Открыть файл в режиме записи можно одним из следующих способов:

Первый способ

ofstream F;F.open("abc.txt", ios::out);

Второй способ, режим ios::out является режимом по умолчанию для потока ofstream

ofstream F;F.open("abc.txt");

Третий способ объединяет описание переменной типа поток и открытие файла в одном операторе.

ofstream F("abc.txt", ios::out);

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

После открытия файла в режиме записи, в него можно писать точно так же, как и на экран, только вместо стандартного устройства вывода cout необходимо указать имя открытого для записи файла.

Например, для записи в поток F переменной a, оператор вывода будет иметь вид:

F << a;

Для последовательного вывода в поток G переменных b, c и d оператор вывода станет таким:

G << b << c << d;

Чтение из файла выполняется корректно до достижения конца файла. Для проверки, достигнут ли конец файла, можно использовать функцию

ios::eof(),

которая имеет прототип int eof ();.

Данная функция возвращает 0, если конец файла не достигнут, и значение 1 при достижении конца файла.

Функция закрытия файла

Открытые на диске файлы после окончания работы с ними рекомендуется закрыть. Оператор закрытия файла будет иметь вид:

F.close;

где F – переменная для записи информации в файл.



Поделиться:


Последнее изменение этой страницы: 2021-07-18; просмотров: 216; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.110.145 (0.006 с.)