Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
11 - Файлы.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
311.88 Кб
Скачать

Тема 11. Файлы Зачем нужны файлы?

Переменные, массивы и структуры хранятся в оперативной памяти компьютера, следовательно, выделенная под них память освобождается после завершения работы программы, и данные, содержащиеся в них, пропадают. Этот факт можно проверить, открыв диспетчер задач и выбрав вкладку «Быстродействие»:

На данной вкладке можно увидеть объем занятой памяти в файле подкачки:

Напишем теперь программу, содержащую объявление большого массива:

int mas[10000000];

Запуск этой программы приведет к тому, что объем занятой памяти увеличится:

После завершения работы программы объем занятой памяти станет прежним:

Очевидно, что такая ситуация недопустима, если данные, с которыми работает программа, остаются актуальными и после ее завершения. Например, записи о рекордах в компьютерной игре не сбрасываются после выхода из нее, а список телефонов в телефонной базе остается неизменным после выхода из оболочки этой базы. Еще одна проблема, связанная с оперативной памятью, заключается в том, что ее размер относительно невелик, и хранить в ней большие объемы информации невозможно.

Возможность хранить информацию независимо от того, работает программа или нет, а также хранить большие объемы информации предоставляют файлы. Они находятся на жестком диске, и их содержимое загружается в оперативную память по мере необходимости.

Запись информации в файл

Рассмотрим, как записать информацию в файл двумя способами: используя конструкции языка Си и конструкции языка C++. На обоих языках запись информации в файл осуществляется в четыре шага:

  • объявление файловой переменной;

  • открытие файла для записи;

  • запись информации в файл;

  • закрытие файла.

Рассмотрим, как реализуются эти четыре шага на языке Си.

//Библиотека с функциями консольного

//и файлового ввода/вывода

#include <stdio.h>

int main() {

//Объявление файловой переменной myFile

FILE* myFile;

//Открытие файла для записи

myFile = fopen("hello.txt", "w");

//Посимвольная запись слова «Привет» в файл

fputc('П', myFile); fputc('р', myFile);

fputc('и', myFile); fputc('в', myFile);

fputc('е', myFile); fputc('т', myFile);

//Закрытие файла

fclose(myFile);

return 0;

}

После запуска программы откроем файл hello.txt и убедимся, что этот файл создан, и требуемое сообщение записано в него.

В рассмотренной программе объявление файловой переменной и открытие файла можно объединить:

FILE* myFile = fopen("hello.txt", "w");

Рассмотрим теперь, как эта же программа выглядит на C++.

//Библиотека с функциями файлового ввода/вывода

#include <fstream>

using namespace std;

int main() {

//Объявление файлового потока myFile

//и открытие файла для чтения

ofstream myFile("hello_cpp.txt");

//Посимвольная запись слова «Привет» в файл

myFile.put('П'); myFile.put('р');

myFile.put('и'); myFile.put('в');

myFile.put('е'); myFile.put('т');

//Закрытие файла

myFile.close();

return 0;

}

Обратите внимание на то, что все шаги одинаковы для обоих языков. В Си используется процедурный вариант, а в C++ - объектно-ориентированный.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]