Описує, як програміст C створює, відкриває та закриває текстовий або двійковий файл.
Файл означає серію байтів, незалежно від того, чи це текстовий файл, чи бінарний файл, мова C не лише надає доступ до функцій верхнього рівня, але також забезпечує базовий виклик (ОС) для обробки файлів на пристрої зберігання даних. . У цьому розділі пояснюються важливі виклики в управлінні документами.
відкритий файл
Зазвичай за допомогою функції fopen () для створення нового файлу або відкриття існуючого файлу цей виклик ініціалізує об’єкт типу FILE, який містить всю необхідну інформацію для керування потоком. Ось прототип виклику цієї функції:
FILE *fopen ( const char * ім’я файлу, const char * режим);
Тут ім'я файлу - це рядок для назви файлу, значення режиму доступу може бути одним із таких значень:
візерунок | опис |
r | Відкрийте існуючий текстовий файл, який дозволяє його читати. |
w | Відкрийте текстовий файл, який дозволяє писати в файл. Якщо файл не існує, створюється новий файл. Тут ваша програма записує вміст із початку файлу. Якщо файл існує, його буде скорочено до нульової довжини та перезаписано. |
a | Відкрийте текстовий файл і запишіть у файл у режимі додавання. Якщо файл не існує, створюється новий файл. Тут ваша програма додає вміст до файлів, які у вас уже є. |
r+ | Відкрийте текстовий файл, який дозволяє читати та писати файл. |
w+ | Відкрийте текстовий файл, який дозволяє читати та писати файл. Якщо файл уже існує, він скорочується до нульової довжини, а якщо файлу не існує, створюється новий файл. |
a+ | Відкрийте текстовий файл, який дозволяє читати та писати файл. Якщо файл не існує, створюється новий файл. Читання починається з початку файлу, а запис відбувається лише в режимі додавання. |
Якщо оброблений двійковий файл, використовуйте такий режим доступу, щоб замінити вищезазначене:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
закритий файл
Щоб закрити файл, скористайтеся функцією fclose(). Прототип функції такий:
int fclose (ФАЙЛ *fp);
- Якщо файл закрито успішно, функція fclose() повертає нуль, а якщо помилка, повертає EOF. Фактично ця функція видаляє дані з буфера, закриває файл і звільняє всю пам’ять, яка використовується для цього файлу. EOF є константою, визначеною у файлі заголовка stdio.h
Стандартна бібліотека C надає різні функції для читання та запису файлів по символах або у вигляді рядка фіксованої довжини.
Записати в файл
Ось найпростіші функції для запису символів у потік:
int fputc ( int c , ФАЙЛ *fp );
Функція fputc () записує символьне значення параметра c у вихідний потік, на який вказує fp. Якщо запис пройшов успішно, він повертає написаний символ і EOF, якщо сталася помилка. Ви можете використовувати таку функцію, щоб записати в потік рядок, що закінчується нулем:
int fputs (const char *s, FILE *fp);
Функція fputs () записує рядок s у вихідний потік, на який вказує fp. Якщо запис вдається, він повертає невід’ємне значення та EOF, якщо сталася помилка. Ви також можете використовувати функцію int fprintf (FILE * fp, const char * format,...) записує рядок у файл. Спробуйте такий приклад:
Примітка. Переконайтеся, що у вас є доступний каталог tmp. Якщо він не існує, вам потрібно спочатку створити його на своєму комп’ютері.
/tmp зазвичай є тимчасовим каталогом у системі Linux. Якщо ви працюєте в системі Windows, вам потрібно змінити його на наявний каталог у локальному середовищі, наприклад: C: \ tmp, D: \ tmp тощо.
живий приклад
#включити
Коли наведений вище код компілюється та виконується, він створює новий файл test.txt у каталозі / tmp. І записує у два рядки, використовуючи дві різні функції. Давайте прочитаємо цей файл далі.
Прочитайте файл
Нижче наведено найпростішу функцію для читання окремого символу з файлу:
int fgetc ( ФАЙЛ * fp );
Функція fgetc () читає символ із вхідного файлу, на який вказує fp. Поверненим значенням є прочитаний символ і EOF, якщо сталася помилка. Наступна функція дозволяє читати рядок із потоку:
char *fgets ( char *buf , int n , FILE *fp );
Функція fgets () зчитує n-1 символ із вхідного потоку, керованого fp. Він копіює прочитаний рядок до буфера buf і додає нульовий символ у кінці, щоб завершити рядок.
Якщо ця функція зустрічає символ ламаної лінії '\ n' або EOF кінця файлу перед читанням останнього символу, тоді повертається лише до символів читання, включаючи розриви рядків. Ви також можете використовувати функцію int fscanf (FILE * fp, const char * format,...) для читання рядка з файлу, але вона припиняє читання, коли зустрічає перший пробіл і розрив рядка.
живий приклад
#включити
Коли наведений вище код компілюється та виконується, він зчитує файли, створені в попередньому розділі, виробляючи такі результати:
1: Це 2: перевіряє fprintf...
3: Це тестування для fputs...
По-перше, метод fscanf() лише читає This, тому що він зустрічає пробіл позаду. По-друге, викличте функцію fgets (), щоб прочитати частину, що залишилася до кінця рядка. Нарешті, викличте fgets (), щоб повністю прочитати другий рядок.
Двійкова функція введення-виведення
Наступні дві функції використовуються для двійкового введення та виведення:
size_t fread (void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file); size_t fwrite (const void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file);
Обидві функції читають і записують для блоків зберігання - зазвичай масивів або структур.
Вище про читання та запис файлів C належить HDV Phoelectron Technology Ltd., технічному оператору програмного забезпечення. А також компанія з мережевого обладнання (наприклад, ACОНУ/ спілкуванняОНУ/ розумнийОНУ/ клітковинаОНУ, тощо) об’єднала потужну команду програмного забезпечення, щоб кожен клієнт налаштував ексклюзивні вимоги, які цього потребують, а також зробив наші продукти розумнішими та вдосконаленими.