Theory and Tasks for Students - Spring 2019
Ввод/вывод в файлы

Для начала работы с файлом требуется открыть его соответсвующим образом, т.е. получить дескриптор файла. Это делается с помощью функции open(): fin = open("file.txt", "r"); fout = open("/home/ai/a.out", "w"); f_log = open("E:/some/path/my.log", "a"); Первым аргументом указывается путь к файлу - относительный или абсолютный. Путь может включать в себя псевдодиректории . и .., обозначающие текущую директорию и родительскую, соответственно.

Второй аргумент - режим работы с файлом, он составляется из нескольких символов. Первый, обязательный - основной режим:

  • r - read, т.е. чтение из файла;
  • w - write, т.е. запись в файл;
  • a - append, т.е. дописывание в файл.

Если файл не существует, режимы w и a создают его. Дальше может быть добавлен символ b, от слова binary, что используется обычно при чтении нетекстовых файлов, например, изображений. После этого может быть добавлен символ +, обозначающий открытие файла и на запись/дозапись, и чтение.

Для чтения и записи используются две отдельные функции, read() и write(). Чтобы считать строку, требуется указать количество символов для чтения - в противном случае будет считан весь файл в одну строку. При выводе строки в файл к ней не добавляется символ перевода строки \n, в отличие от функции print(). str = fin.read(10); fout.write(str); После работы с файлом следует закрыть дексриптор функцией close(). Это освобождает системные ресурсы и гарантирует запись данных из системного буфера в файл. fin.close(); fout.close();