- •Потоки та файли
- •Основи файлової системи
- •Закриття файлу
- •Запис символу: putc() і fputc()
- •Читання символу: getc() і fgetc()
- •Використання fopen(), getc(), putc(), і fclose()
- •Використання feof ()
- •Введення/виведення рядків: fputs () і fgets ()
- •Int fputs (const char * cmp, file * pf); char * fgets (char * cmp, int довжина, file * pf);
- •Функція rewind ()
- •Функція ferror ()
- •Функції fprinf () і fscanf ()
- •Введення-виведення при прямому доступі: функція fseek ()
- •Int fseek (file * pf, long int коліч_байт, int начало_отсчета);
- •Виведення у файловий потік
- •Запис у вихідний файловий потік
- •Читання з вхідного файлового потоку
- •Перевірка помилок при виконання файлових операцій
- •Виконання операцій читання і запису
- •Зауваження та рекомендації
Виконання операцій читання і запису
Усі програми, представлені вище, виконували файлові операції над символьними рядками. В міру ускладнення ваших програм, можливо, вам знадобиться читати і писати масиви та структури. Для цього програми можуть використовувати функції read і write. При використанні функцій read і write ми повинні вказати буфер даних, в який дані будуть читатися чи з якого вони будуть записуватися, а також довжину буфера в байтах, як показано нижче:
input_file.read (buffer, sizeof (buffer)); output_file.write (buffer, sizeof (buffer));
Наприклад, наступна програма STRU_OUT.CPP використовує функцію write для виведення вмісту структури в файл EMPLOYEE.DAT:
# include <iostream.h> # include <fstream.h> void main (void) {
struct employee {
char name [64]; int age; float salary; } Worker = {"Джон Дой", 33, 25000.0}; ofstream emp_file ("EMPLOYEE.DAT"); emp_file.write ((char *) & worker, sizeof (employee)); }
Функція write зазвичай отримує покажчик на символьний рядок. Символи (char *) є оператор приведення типів, який інформує компілятор, що ви передаєте покажчик на інший тип. Подібним чином наступна програма STRU_IN.CPP використовує метод read для читання з файлу інформації про службовця:
# include <iostream.h> # include <fstream.h> void main (void) {
struct employee {
char name [6 4]; int age; float salary; } Worker = {"Джон Дой", 33, 25000.0}; ifstream emp_file ("EMPLOYEE.DAT"); emp_file.read ((char *) & worker, sizeof (employee)); cout <<worker.name <<endl; cout <<worker.age <<endl; cout <<worker.salary <<endl; }
Зауваження та рекомендації
-
Заголовочний файл fstream.h визначає класи ifstream і ofstream, за допомогою яких ваша програма може виконувати операції файлового введення і виведення.
-
Для відкриття файлу на введення або виведення ви повинні оголосити об'єкт типу ifstream або ofstream, передаючи конструктору цього об'єкта ім'я необхідного файлу.
-
Після того як ваша програма відкрила файл для введення або виведення, вона може читати або писати дані, використовуючи оператори вилучення (>>) і вставки (<<).
-
Ваші програми можуть виконувати введення або виведення символів у файл або з файлу, використовуючи функції get і put.
-
Ваші програми можуть читати з файлу цілий рядок, використовуючи функцію getline.
-
Більшість програм читають вміст файлу, поки не зустрінеться кінець файлу. Ваші програми можуть визначити кінець файлу за допомогою функції eof.
-
Коли ваші програми виконують файлові операції, вони повинні перевіряти стан всіх операцій, щоб переконатися, що операції виконані успішно. Для перевірки помилок ваші програми можуть використовувати функцію fail.
-
Якщо вашим програмам необхідно вводити або виводити такі дані, як структури або масиви, вони можуть використовувати методи read і write.
-
Якщо ваша програма завершила роботу з файлом, його слід закрити за допомогою функції close.