НОУ ІНТУІТ, Лекція, Бібліотека мови Сі та файли введення-виведення

Закриття файлу: fclose( )

У нашому прикладі показано, як потрібно закривати файл:

Аргумент функції є вказівником на файл. Для серйознішої програми потрібно дивитися, чи успішно закритий файл. Функція fclose( ) повертає значення 0 якщо файл закритий успішно, і EOF в іншому випадку.

Текстові файли з буферизацією

Функції fopen( ) і fclose( ) працюють із текстовими файлами з " буферизацією " . Під буферизацією ми розуміємо, що дані, що вводяться і виводяться, запам'ятовуються в тимчасовій області пам'яті , званої буфером . Якщо буфер заповнився, його вміст передається в блок, і процес буферизації починається знову. Одна з основних задач fclose( ) полягає в тому, щоб звільнити будь-які частково заповнені буфери, якщо файл закритий. Текстовим вважається файл , у якому інформація запам'ятовується як символів у коді ASCII чи аналогічному. Текстовий файл відрізняється від двійкового файлу, який зазвичай використовується для запам'ятовування кодів машинної мови.

Введення-виведення текстового файлу: getc( ), putc( )

Дві функції getc( ) і putc( ) працюють аналогічно до функцій getchar( ) і putchar( ) (описаних у попередніх лекціях). Різниця полягає в тому, що ви повинні повідомити, який файл слід використовувати.

призначена для отримання символу від стандартного введення

- для отримання символу від файлу, який вказує in.

виводить символ на стандартний файл виводу.

призначена для запису символу ch у файл, який посилається покажчик t типу FILE.

Введення-виведення файлу: fprintf( ), fscanf( ), fgets( ), fputs( )

Всі функції вводу-виводу, які ми використовували в попередніх лекціях, мають аналоги для введення-виводу файлу. ОсновнеВідмінність полягає в тому, що нам потрібно використовувати покажчик типу FILE, щоб повідомити функції з яким файлом їм слід працювати. Подібно getc( ) і putc( ) ці функції використовуються після функції fopen( ) , що відкриває файл і перед fclose( ) , що закриває його.

Функції fprintf( ) та fscanf( )

Ці функції вводу-виводу працюють майже як printf( ) і scanf( ) (див. лекцію 4), але їм потрібен додатковий аргумент посилання на сам файл . Він є першим у списку аргументів. Приклад, що ілюструє звернення до цих функцій:

На відміну від getc( ) і putc( ) ці функції отримують покажчик типу FILE як перший аргумент.

Функція fgets( )

Ця функція має три аргументи, тоді як gets( ) має лише один. Приклад її використання:

Функція fputs( )

Ця функція нагадує функцію puts( ) . Оператор

Код Положення у файлі
0початок файлу
1поточна позиція
2кінець файлу

Передає рядок "Рядок" у файл, на який посилається покажчик fi типу FILE. Звичайно, спочатку потрібно відкрити файл за допомогою функції fopen().

l є цілим числом, яке встановлюється в EOF якщо fputs( ) зустрічає EOF або помилку. Ця функція не ставить завершальний символ ' \0 ' в кінці рядка, що копіюється. На відміну від puts, функція fputs( ) не додає символ нового рядка в її виведення.