- •Тема. Створення та оброблення файлів даних
- •Основні функції, константи, типи та макроси для роботи з файлами
- •Оголошення змінних типу файл
- •Відкриття файлу
- •Використання функцій fread() та fwrite()
- •Функції fscanf() та fprintf()
- •Стандартні потоки
- •Перенаправлення потоків
- •Зчитування та запис текстових файлів
- •Зчитування та запис двійкових (бінарних) файлів Функції get() та put()
- •Функції read() та write()
Функції read() та write()
istream &read(unsigned char *buf, int num);
ostream &write(const unsigned char *buf, int num);
Функція read() зчитує num байт з потоку у буфер buf.
Функция write() записує num байт в потік з буферу buf.
Буфер buf представляє собою масив символів, тому для запису будь-яких даних необхідно перетворити до масиву символів.
Якщо кінець файлу досягається до того, як буде зчитано задане число символів, функція read() зупиниться, а у буфері буде знаходитись кількість зчитаних символі. Для визначення кількості зчитаних символів використовують функцію int gcount().
Приклад ілюструє використання цих функцій для запису та зчитування цілого одновимірного масиву:
#include <string.h> #include <iostream> #include <fstream> using namespace std; int main() { int n[5] = {1, 2, 3, 4, 5}; int i; |
|
ofstream Fzap; |
//оголошення змінної, пов’язаною з потоком введення |
Fzap.open("c:\\priklad.dat", ios::out | ios::binary); |
//відкриваємо файл в бінарному режимі для запису даних |
if (!Fzap) { cout<<"Помилка відкриття файлу "<<endl; return 0; } |
//перевіряємо чи файл відкрився, якщо ні то дати повідомлення на екран та вийти з програми |
Fzap.write((char *) &n, sizeof(n)); |
//записуємо змінну n розміром sizeof(n) |
Fzap.close(); |
//зачиняємо файл |
for (i=0; i<5; i++) n[i] = 0; |
//очищуємо масив шляхом обнулінням кожного елемента |
ifstream Fread; |
//оголошення змінної, пов’язаною з потоком виведення |
Fread.open("c:\\priklad.dat", ios::in | ios::binary); |
//відкриваємо файл в бінарному режимі для зчитування даних |
if (!Fread) { cout<<"Помилка відкриття файлу "<<endl; return 0; } |
//перевіряємо чи файл відкрився, якщо ні то дати повідомлення на екран та вийти з програми |
Fread.read((char *) &n, sizeof(n)); |
//зчитування інформації в змінну n розміром sizeof(n) |
Fread.close(); |
//зачиняємо файл |
printf("Зчитаний вектор : "); for (i=0; i<5; i++) cout << n[i] << " "; |
//виводимо на екран зчитаний масив |
return 0; } |
|
Результат запису у файл
Результат виконання програми
Зчитаний вектор : 1 2 3 4 5