Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПОС(методичка).doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
773.12 Кб
Скачать

2.15 Читання і запис текстових файлів

Для тривалого зберігання даних, введених користувачем, можна використовувати два підходи: зберігати дані у файлах даних або використовувати для цих цілей бази даних. Предметом нашого розгляду буде читання і запис текстових файлів.

Перед роботою з файлом його потрібно відкрити. Це можна зробити за допомогою функції fopen():

FILE *fopen(const char *filename,const char *mode)

Функція fopen() відкриває існуючий файл або створює новий. У разі успіху вона повертає покажчик потоку, який повинен бути оголошений до цього, запам'ятав в змінній для використання іншими функціями. У разі помилки функція повертає нуль. Розглянемо параметри цієї функції:

const char *filename - покажчик на рядок імені файлу. Може містити повний шлях до файлу.

const char *mode - покажчик на один з можливих режимів, розглянутих нижче.

Таблица 2

Режим

Опис

rt

Відкриває файл для читання

wt

Створює новий файл. У випадку, якщо файл з таким ім'ям вже існує, то він буде перезаписаний

at

Відриває файл в режимі додавання інформації

r+t

Відкриває існуючий файл для читання і запису

w+t

Створює новий файл для читання і запису. Якщо файл з таким ім'ям вже існує, то він буде перезаписаний

a+t

Відкриває існуючий файл або створює новий в режимі додавання інформації

Параметр, задаючий режим, при виклику функції fopen() потрібно брати в подвійні лапки.

Нижче приведений фрагмент коду для створення файлу dat1.txt:

FILE *fp;

fp=fopen(“dat1.txt”,”wt”);

if(fp==NULL)

{

printf(“Неможливо створити файл”);

exit(1);

}

Розглянута в даному прикладі функція exit() використовується для припинення роботи програми при виникненні помилки.

Якщо до exit() звернулися з функції, викликаною головною програмою, то припиняє роботу вся програма, а не тільки ця функція. Приємна особливість цієї функції полягає в тому, що вона закриває будь-які файли, відкриті функцією fopen().

Аргументом функції exit() є номер коду помилки. У некоторsх системах він може передавться іншій програмі, якщо початкова припинила роботу.

Існує угода, що 0 - нормальне завершення, тоді як будь-яке інше значення свідчить про помилку.

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

fgetc()

Функція fgetc() призначена для посимвольного читання з файлу. У разі успіху повертає лічений символ. Досягши кінця файлу або у разі помилки повертає EOF.

Далі приведений приклад програми, яка прочитує і відображає на екран вміст текстового файлу.

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

void main(void0

{

FILE *fp;

char з;

fp=fopen(“dat1.txt”,”rt”);

if(fp==NULL)

{

printf(“Неможливо відкрити файл”);

exit(1);

}

while((c=fgetc(fp))!=EOF)

printf(“%c”,c);

fclose(fp);

getch();

}

fgets()

Формат функції:

char *fgets(char *str,int num,FILE *stream)

Функція fgets() прочитує до num-1 символів з файлу stream і поміщає їх в масив символів, на який указує str. Символи прочитуються до тих пір, поки не зустрінеться символ “новий рядок”, EOF. У разі успіху fgets() повертає рядок, при невдачі повертається NULL.

Приведений нижче фрагмент коду по строках прочитує вміст текстового файлу.FILE *fp;

char str[256];

fp=fopen(“dat1.txt”,”rt”);

if(fp==NULL)

{

printf(“Невозможно открыть файл”);

exit(1);

}

while(fgets(str,256,fp)!=NULL)

puts(str);

fclose(fp);

fputc()

Функція fputc() здійснює запис одного символу у відкритий файл в позицію, відповідну поточному положенню покажчика. Потім дає приріст покажчику. Повертає значення записаного символу. У разі помилки повертає EOF. Наприклад:

FILE *fp;

char c=’A’;

fputc(с,fp);

fputs()

Функція fputs() записує рядок, заданий першим аргументом у файл. У разі помилки повертає EOF