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

Приклади розв‘язання задач при роботі з файлами. Задача 1.

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

#include <stdio.h>

void main ( )

{

int n;

char str[50], strl[50), ch;

FILE *fp;

// заповнюємо файл

fp = fopen ("ex.txt", "w");

puts ("Уведіть ціле число"); scanf ("%d" ,&n) ;

fprintf (fp, "%d\n", n) ;

puts ("Уведіть символ"); ch = getchar( ) ;

putc (ch, fp);

puts ("Уведіть рядок"); gets (str) ;

fputs ( str, fp ) ;

fclose (fp) ;

// читаємо з файлу

if((fp = fopen("ex.txt","r")) != NULL )

{

fcanf ( fp, "%d", &n) ; printf ("n=%d\n" , n) ;

ch = getc (fp) ; putchar (ch) ;

fgets (strl, 50, fp) ; puts ( str1 ) ;

fclose (fp) ;

}

else printf ("\n Не можна відкрити файл для читання!");

}

Другий параметр функції fgefs() – кількість N символів, що зчитуються, включаючи '\0'. Ця функція припиняє роботу після читання N-1 символу, або після читання '\0’. У будь-якому випадку в кінець рядка додається '\0'. Функція fgets( ) повертає або адресу прочитаного рядка, або NULL по закінченні файлу чи у випадку помилки.

У випадку закінчення файлу чи помилки функція getc( ) повертає EOF.

Функція putc( ) повертає записану літеру або ( у випадку помилки) - EOF.

Функція fputs( ) повертає код останнього прочитаного символу, якщо все в порядку, і EOF у випадку помилки. Ця функція не переводить рядок автоматично.

Усі приведені вище функції обробляли файл послідовно – символ за символом. Мова С надає можливість працювати з файлом і як з масивом: безпосередньо досягати будь-якого визначеного байта. Для позиціюванння файлу служить функція

fseek ( покажчик на файл, зсув від поч. крапки, поч. крапка)

Другий аргумент має тип long, його значення може бути більше і менше нуля. Він показує, як далеко (у байтах) варто просунутися від початкової точки. Третій аргумент є кодом, що визначає положення початкової точки у файлі. Установлено такі значення для коду

0 – початок файлу;

1 – поточна позиція;

2 – кінець файлу.

У випадку успіху функція fseek( ) повертає 0, а якщо була помилка (наприклад, спроба виходу за ліву границю файлу ), тоді повертається -1.

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