НОУ ІНТУІТ, Лекція, Бібліотека мови Сі та файли введення-виведення
Закриття файлу: 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( ) не додає символ нового рядка в її виведення.