Файли в мові С
Деякі стандартні функції для роботи з файлами в мові С
Стандартна послідовність дій для роботи з файлом виглядає наступним чином:
Файли прямого доступу
Функції прямого введення-виведення в мові С
Прості операції з файлами введення в С++.
Прості операції з файлами виведення в С++.
86.00K
Category: softwaresoftware

Файли в мові С

1. Файли в мові С

Для відкриття файлу використовується стандартна функція:
FILE* fopen ( char* filename, char* mode);
filename – стрінг, який містить повне ім'я файлу, mode –
стрінг, який визначає режим роботи із файлом:
"r" – відкрити існуючий файл для введення з нього
(читання);
"w" – створити новий файл або відкрити (і звільнити від
попереднього вмісту) існуючий файл для виводу (запису) у
його початок;
"a" – створити новий файл для виводу або відкрити
існуючий файл для виводу в кінець файлу;
"r+" – відкрити існуючий файл для оновлення (тобто
читання й запису), яке буде здійснюватись з його початку;
"w+" – створити новий файл або відкрити існуючий файл
для оновлення, яке буде здійснюватись з його початку;
"a+" – створити новий файл або відкрити існуючий файл і
підстроїтись у його кінець для оновлення.
Ця функція повертає вказівник на структуру FILE, яка
зберігає всю інформацію про файл.

2.

У разі виникнення помилки при відкритті файлу ця
функція повертає NULL. Якщо до символів, які
задають режим, дописана літера t, то файл
використовується як текстовий (цей режим діє за
умовчанням), якщо ж літера b – то як двійковий.
Зауваження 1. Хоча режим оновлення допускає як
запис, так і читання із файлу, але при переході від
операції запису до читання слід звертатись до
стандартної функції
int fflush (FILE* fp);
яка виконує додатковий запис усіх даних, що ще
залишились у буфері.
Зауваження 2. Всі функції, які працюють із файлами,
підключаються через файл stdio.h або cstdio .
Для закриття файлу використовується стандартна
процедура:
int fclose (FILE* fp);

3. Деякі стандартні функції для роботи з файлами в мові С

1. int fgetc (FILE*fp);
Здійснює введення чергового символу із вказаного файлу. Якщо
повертає константу EOF, то сталась помилка або досягнуто кінця
файлу.
2. int fputc (int ch, FILE*fp);
Виводить символ з кодом ch у вказаний файл. Повертає змінну з
кодом ch або EOF, якщо сталась помилка.
3. char * fgets (char *s, int n, FILE *fp);
Здійснює введення в стрінг s (буфер) символів із файлу fp, до
тих пір, поки не виконається одна з умов:
• виникає символ '\n' (початок нового рядку);
• досягнутий кінець файлу;
• прочитано n-1 символів.
Після цього стрінг доповнюється '\0'. У першому випадку
перед '\0' записується '\n'.
Якщо читання із файлу завершено успішно, то повертає
вказівник на стрінг s, у разі помилки – повертає NULL.
4. int fputs (char *s, FILE *fp);
Ця функція виводить стрінг s у вказаний файл. Повертає 0 або
EOF, якщо сталась помилка.

4.

5. int fprintf (FILE *fp , char *format, …);
Ця функція здійснює форматований вивід своїх аргументів
у файл, який ідентифікується файловою змінною fp, під
керівництвом стрінгу format.
6. int fscanf (FILE *fp , char *format, …);
Здійснює форматоване, визначене стрінгом format,
введення з вказаного файлу.
7. int feof (FILE *fp);
Повертає не 0 (тобто ІСТИНУ), якщо при читанні із файлу
був досягнутий кінець файлу і 0 (тобто ХИБНІСТЬ) у
супротивному випадку.
8. int ferror (FILE *fp);
Повертає не 0 (тобто ІСТИНУ), якщо при виконанні
операцій введення або виведення із файлом fp виникали
помилки і 0 (тобто ХИБНІСТЬ) у супротивному випадку.
9. void rewind (FILE *fp);
Покажчик поточної позиції у файлі пересувається на
початок файлу. При цьому покажчик кінця файлу та
покажчик помилок занулюються.
Всі згадані функції підключаються через файли stdio.h або
cstdio

5. Стандартна послідовність дій для роботи з файлом виглядає наступним чином:

FILE *fp_in =
fopen ("G:\\in.txt", "r");
if (fp_in) // якщо файл існує
{
// тут працюємо з файлом
fclose (fp_in);
}
else // якщо файл не існує
fprintf (stderr, "\n Error!!!");

6. Файли прямого доступу

Прямий (direct access) (на відміну від послідовного) доступ до
файлу реалізують наступні стандартні функції:
1. int fgetpos ( FILE *fp, fpos_t *pos);
Заносить у змінну pos, типом якої є fpos_t (це синонім типу
long int), значення поточної позиції у файлі fp. Повертає 0,
якщо позиція pos успішно визначена.
2. int fsetpos ( FILE *fp, fpos_t *pos);
Встановлює у файлі fp поточну позицію в положення, визначене
вказівником pos. Останній мав бути раніше визначений
функцією fgetpos. Повертає 0, якщо позиція pos успішно
встановлена.
3. int fseek ( FILE *fp, long offset, int
from_where);
Встановлює у файлі fp поточну позицію в положення, що
відстоїть на offset байтів від положення, визначеного
аргументом from_where у бік кінця файлу при offset>0 і в бік
початку при offset<0. Аргумент from_where може набувати
значення однієї з трьох стандартних констант: SEEK_SET (=0)
– відлік від початку файлу; SEEK_CUR (=1) – відлік від поточної
позиції у файлі; SEEK_END (=2) – відлік від кінця файлу.
Повертає 0, якщо позиція успішно встановлена.

7. Функції прямого введення-виведення в мові С

size_t fread (void* ptr, size_t size,
size_t num, FILE* filename);
Читає із файлу filename в масив ptr не більше
num елементів розміру size. Повертає кількість
успішно прочитаних елементів (вона може бути
менше заявленої).
size_t fwrite (void* ptr, size_t size,
size_t num, FILE* filename);
Записує у файл filename із масиву ptr num
елементів розміру size. Повертає кількість успішно
записаних елементів.

8. Прості операції з файлами введення в С++.

Припустимо, що програма має читати інформацію із
файлу. Для цього необхідно виконати наступні кроки:
1.Створити екземпляр класу ifstream, для керування
потоком введення:
ifstream ifile;
2.Поставити цей екземпляр у відповідність конкретному
файлу:
ifile.open (“D:\\in.txt”);
(Кроки 1 та 2 можна замінити створенням екземпляру з
допомогою конкретного конструктора:
ifstream ifile (“D:\\in.txt”, ios::in);)
3.Працювати із цим об'єктом так само, як із об'єктом
cin.

9. Прості операції з файлами виведення в С++.

Припустимо, що програма має виводити інформацію у
файл. Для цього необхідно виконати наступні кроки:
1.Створити екземпляр класу ofstream, для керування
потоком виведення:
ofstream ofile;
2.Поставити цей екземпляр у відповідність конкретному
файлу:
ofile.open (“D:\\in.txt”);
(Кроки 1 та 2 можна замінити створенням екземпляру з
допомогою конкретного конструктора:
ofstream ofile (“D:\\in.txt”, ios::out);)
3.Працювати із цим об'єктом так само, як із об'єктом
cout.
English     Русский Rules