Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB_TO2.doc
Скачиваний:
15
Добавлен:
19.02.2016
Размер:
2.62 Mб
Скачать

4 Приклад виконання лабораторної роботи

Написати програму, яка записує рядок str у файл і читає 10 символів цього рядка в рядок str1. Одержаний рядок вивести на екран.

Текст програми:

#include <stdlib.h>

#include <stdio.h>

FILE *fp1, *fp2; /* 1-й файл для. читання, 2-й для запису*/

char str[]="qwertyuioplkjhgf", str1[40];

main( ) {

/* Відкриття файлів і перевірка на правильність відкриття. */

fp2 = fopen("C:\\lk\\list2.txt","w" ); /* 2-й для запису*/

if ( fp2!= NULL )

printf("\nSuccessful opening C:\\lk\\list.txt in mode r.\n");

else { printf("pomilka\n") ; exit(0); }

fputs(str, fp2) ; /* запис з рядка str в файл fp2*/

fclose(fp2);

fp2 = fopen("C:\\lk\\list2.txt","r" ); /* 1-й файл для. читання,*/

if ( fp2!= NULL )

printf("\nSuccessful opening C:\\lk\\list2.txt in mode w.\n");

else { printf("pomilka\n") ; exit(0) ;}

fgets(str1, 10, fp2) ; /* читання з файлу fp2 в рядок str1 10 символів*/

printf("\nstr= %s\n", str1);

/* Закриття файлів */

fclose(fp2);

system("pause");

return 0;

}

5 Контрольні запитання

  1. Які функції без форматного вводу-виводу?

  2. За допомогою якої функції відкриваються файли?

  3. За допомогою якої функції закриваються файли?

  4. В якій бібліотеці знаходяться функції файлового вводу-виводу?

  5. За допомогою якої функції відкриваються файли?

  6. За допомогою якої функції закриваються файли?

Лабораторна робота № 24

Тема: Блочний файловий ввід-вивід структурованих даних

Мета роботи: Навчитися працювати з двійковими файлами. Організація блокового вводу-виводу даних і їх зберігання на зовнішніх носіях.

1 Короткі теоретичні відомості

Блочний вивід. Функція fwrite(). Блочний ввід-вивід використовується при збереженні даних, які буде зчитувати та чи інша програма на С. Цей спосіб використовується тільки для двійкових файлів. В процесі блочного вводу-виводу дані копіюються повністю з пам’яті на диск і навпаки з диску в пам’ять. Наприклад, при одному виклику функції блочного вводу-виводу можна записати цілий масив і навпаки, одним викликом функції зчитати цей масив з диску в пам’ять. Блочний ввід-вивід виконується функціями fread() i fwrite().

Функція fwrite(). Ця бібліотечна функція записує блок даних з пам’яті в двійковий файл. Прототип функції, який знаходиться в файлі stdio.h

int fwrite(void *buf, int size, int count, FILE *fp) ;

Аргумент buf - це вказівник на ділянку пам’яті, в якій є дані для запису в файл. Опис void означає, що аргумент є вказівником на любий тип даних.

Аргумент size - вказує розмір в байтах окремих елементів даних в блоці.

Аргумент count - вказує загальну кількість елементів даних. Наприклад, якщо треба записати масив з 100 цілочисельних елементів, то size=2, а count=100, бо цілочисельна змінна має 2 байти, кількість елементів рівна 100. Для обчислення аргументу size можна використати операцію sizeof().

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

if ( (fwrite(buf, size, count, fp) != count)

printf("Помилка");

Приклад: Записати одну змінну x типу double

fwrite(&x, sizeof(double), 1, fp);

Приклад: Записати масив data[50] типу float

float data[50];

fwrite(data, sizeof(float), 50, fp);/*Записує масив 50 елементів довжиною 4 байти*/

або fwrite(data, sizeof(data), 1, fp); /* Записує масив як 1 елемент */

Блочний вивід. Функція fread(). Функція fread(). Ця бібліотечна функція зчитує блок даних з двійкового файлу в память.

Прототип функції, який знаходиться в файлі stdio.h

int fread(void *buf, int size, int count, FILE *fp) ;

Аргумент buf - це вказівник на ділянку пам’яті, в яку поміщаються дані з файлу. Опис void означає, що аргумент є вказівником на будь-який тип.

Аргумент size - вказує розмір в байтах окремих елементів даних в блоці.

Аргумент count - вказує загальну кількість елементів даних. Наприклад, якщо треба зчитати масив з 100 цілочисельних елементів, то size=2, а count=100, бо цілочисельна змінна має 2 байти, квлькість елементів рівна 100. Для обчислення аргументу size можна використати операцію sizeof().

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

if ( (fread(buf, size, count, fp) != count) printf("Помилка");

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