Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Samostoyatelnye_po_S.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
672 Кб
Скачать
☆

Обробка відкритого файлу

Яким чином можна прочитати вже відкритий файл або записати в нього інформацію? Для цього в мові C існують спеціальні функції:

Читання (введення) Запис (виведення)

getc () putc ()

fscanf () fprintf ()

fgets () fputs ()

fread () fwrite ()

При кожній операції введення / виводу покажчик поточної позиції файлу зміщується на одну позицію в сторону кінця файлу.

Перевірка ознаки кінця файлу

Так як при кожній операції введення / виводу відбувається переміщення покажчика поточної позиції у файлі, в якийсь момент покажчик досягає кінця файлу. Структура типу FILE має поле - індикатор кінця файлу. Функція feof () перевіряє стан індикатора кінця файлу і повертає значення 0, якщо кінець файлу не був досягнутий, або значення, відмінне від нуля, якщо був досягнутий кінець файлу. Функція має єдиний аргумент - покажчик на потік типу FILE. Виклик функції:

if (! feof (f_in)) ...

перевіряє, що кінець файлу ще не досягнутий.

Закриття файлу

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

fclose (f_in);

При нормальному завершенні програми в більшості операційних систем всі відкриті файли закриваються автоматично, але рекомендується закривати всі файли, подальша обробка яких в програмі не передбачається, за допомогою функції fclose ().

Питання для контролю:

1.Які є функції для читання даних з файлу?

2. Які є функції для запису даних в файл?

3. Яка команда перевіряє кінець файлу?

4. Як закрити файл?

Література:

1. 1.Шилдт Г.: Пер. с англ. –М.: Издательский дом “Вильямс”, 2002. –704с. – с. 319-345

Урок №41

(згідно робочої навчальної програми)

Тема:Запис текстових файлів, посимвольний запис.

Питання:

1.Функції введення-виведення

2. Робота з текстовими файлами

Функції введення-виведення

Найпростіший спосіб виконати читання з файлу або запис в файл - використовувати функції getc () або putc ().

Функція getc () вибирає з файлу черговий символ; їй потрібно тільки знати покажчик на файл, наприклад, char Symb = getc (f_in);

Якщо при обробці досягається кінець файлу, то функція getc () повертає значення EOF (end of file).

Функція putc () заносить значення символу Symb в файл, на який вказує f_out. Формат виклику функції: putc (Symb, f_out);

Робота з текстовими файлами

Приклад 1. Текст з файлу my_char.txt виводиться на екран. Якщо файл не знайдено, на екран виводиться повідомлення "File not found!":

# Include <stdio.h>

int main (void)

{

ch = getc (prt);

FILE * ptr;

unsigned char ch;

if ((ptr = fopen ("my_char.txt", "r"))! = NULL)

{ch = getc (ptr);

while (! feof (ptr))

{printf ("% c", ch);

ch = getc (prt);

}

fclose (ptr);

}

else printf ("\ nFile not found!");

return 0;}

У цьому прикладі для читання з файлу використовується змінна ptr. При відкритті файлу проводиться перевірка. Якщо змінній ptr присвоєно значення NULL, то файл не знайдений; на екран виводиться відповідне повідомлення, і програма завершується. Якщо ptr отримала ненульове значення, то файл відкритий. Далі виконується читання символів з файлу до тих пір, поки не буде досягнутий кінець файлу (! Feof (ptr)). Прочитані символи поміщаються в змінну ch, а потім виводяться на екран.

Приклад 2. Записати в файл букви, що вводяться з клавіатури. Введення продовжується до натискання клавіші F6 або CTRL / z (введення символу EOF - кінця файлу):

# Include <stdio.h>

int main (void)

{char c;

FILE * out;

out = fopen ("Liter", "w");

while ((c = getchar ())! = EOF)

fputc (c, out);

fclose (out);

return 0;

}

Функції fscanf () і fprintf () виконують форматоване введення / виведення. Читання з файлу виконує функція fscanf ():

fscanf (f_in, [рядок формату], [список адрес змінних]);

Функція повертає кількість введених значень або EOF.

Запис у файл здійснює функція fprintf ():

fprintf (f_out, [рядок формату], [список змінних, констант]);

Повертає кількість виведених байтів (символів) або EOF.

Слід зауважити, що виклик функції

fscanf (stdin, [рядок формату], [список адрес змінних]);

відповідає виклику

scanf ([рядок формату], [список адрес змінних]);

Аналогічно,

fprintf (stdout, [рядок формату], [список змінних, констант]);

еквівалентно

printf ([рядок формату], [список змінних, констант]);

Розглянемо приклади програм, що використовують ці функції.

Приклад 3. У програмі створюється масив, що складається з чотирьох цілих чисел. Вивести масив у файл:

# Include <stdio.h>

# Define n 4

int main ()

{

int i = 0;

int array [n] = {4,44,446,4466};

FILE * out;

out = fopen ("num_arr.txt", "w");

for (; i <n; i + +)

fprintf (out, "% 6.2d", array [i]);

fclose (out);

return 0;

}

Приклад 4. Є файл даних, що містить цілі числа, розділені пробілами. Кількість чисел у файлі невідомо. Потрібно знайти середнє арифметичне значення цих чисел:

# Include <stdio.h>

int main ()

{

int S = 0, count = 0, numb;

FILE * in;

if ((in = fopen ("num_arr.txt", "r"))! = NULL)

{ while (! feof (in))

{

fscanf (in, "% d", & numb);

S + = numb;

count + +;

printf ("% d \ n", numb);

}

double aver = (double) S / count;

printf ("Average =% lf \ n", aver);

fclose (in);

}

else

printf ("\ nФайл не знайдений!");

return 0;

}

Читання чисел з файлу виконується в змінну numb до тих пір, поки не буде досягнуто кінець файлу. Одночасно ведеться підрахунок кількості прочитаних символів у змінній count та накопичення суми прочитаних чисел у змінній S. Змінні S і count цілі, тому для правильного обчислення середнього арифметичного, необхідно виконати перетворення однієї з цих змінних в формат double

Питання для контролю:

1. Що робить команда getc ()?

2. Для чого використовується команда putc ()

3. Який синтаксис команди fscanf ()?

4. Що робить команда fprintf()?

Література:

1. Шилдт Г.: Пер. с англ. –М.: Издательский дом “Вильямс”, 2002. –704с. – с. 345-370

Урок №44

(згідно робочої навчальної програми)

Тема:Функція printf() і родинні з нею функції.

Питання:

1. Функція форматованого виведення printf ()

2. Основні формати

3.Модифікації форматів

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]