Читайте также: |
|
Тема: Складання програм з використанням символьного файлового вводу-виводу
Мета роботи: Навчитись працювати з файлами на зовнішніх носіях, оволодіти основами відкриття та закриття файлів, організовувати символьний ввід-вивід даних.
1 Короткі теоретичні відомості
Символьний ввід. Термін символьний ввід-вивід відноситься до вводу-виводу як символів так і цілих рядків. Символьний ввід-вивід відноситься до текстових файлів (до файлів, відкритих в текстовому режимі). Для символьного вводу з файлів є функції:
- fgetc() - Зчитування символів
- fgets() - Зчитування рядків
Функція fgetc() ідентичні і вводять один символ з заданого потоку. Прототип функції fgetc()
іnt getc(FILE *fp);
Аргумент fp це вказівник на потік вводу, який повертається з функції fopen() при відкритті файлу. Функція повертає введений символ або EOF в випадку помилки.
Функція fgets(). Використовується для читання рядка і має прототип
char * fgets( char *str, int n, FILE *fp );
char *str – адреса, за якою розташовані байти, в які треба помістити (зчитати, ввести) введений рядок
n – максимальне число символів (байтів), які можна ввести
FILE *fp це вказівник на файл, який повертається з функції fopen() при відкритті файла, з якого відбувається зчитування.
При успішній роботі функція повертає вказівник str. Значення NULL повертається в двох випадках
1.перш ніж функція ввела хоч би один символ, зустрівся кінець файлу (EOF). В цьому випадку вмістиме буфера незмінне
2.функція вспіла ввести один або декілька символів в буфер str, а потім зустрівся кінець файлу. Тоді після повернення NULL, буфер str містить випадковий набір символів.
Символьний вивід. Для символьного виводу з файлів є три функції
- fputc() - Записування символів
- fputs() - Записування рядків
Функція f put c() виводить один символ в заданий потік. Прототип функції
іnt f putc(int ch, FILE *fp);
Аргумент ch це символ, який треба вивести, формально він має тип int, фактично використовується тільки його молодший байт, в цій змінній міститься записуваний у файл символ.
Аргумент fp це вказівник на потік виводу, який повертається з функції fopen() при відкритті файлу і у який виконується запис.Функція повертає виведений символ або EOF в випадку помилки. Символічна константа EOF визначена в файлі stdio.h і рівна-1. Оскільки це значення не відповідає реальному символу, то його можна використати, як кінець файлу (але тільки в текстовому режимі).
Функція f put s(). Використовується для запису рядка. В ній треба вказати потік виводу, крім того вона не додає символ кінця рядка автоматично – Якщо він потрібний, то програміст повинен сам це ввести. Вона має прототип
char * f put s( char *str, FILE *fp );
str – вказівник на рядок з завершуючим нульовим символом, який треба вивести (записати у файл).
FILE *fp - це вказівник на файл, який повертається з функції fopen() при відкритті файла і у який відбувається запис.
Рядок str записується в файл, причому нульовий завершуючий символ \0 відкидається. При успішній роботі функція повертає додатнє значення або EOF, коли була помилка.
2 Варіанти індивідуальних завдань
№ вар. | Умова завдання |
1. | Відкрити файл для запису, записати в нього символьний рядок, закрити файл, відкрити його для читання і прочитати з нього символьний рядок довжиною в 14 символів і вивести його на екран |
2. | Відкрити файл для запису, записати в нього символьний рядок, закрити файл, відкрити його для читання і прочитати з нього 7 символів в 7 символьних змінних, які вивести на екран. |
3. | Відкрити файл для запису, записати в нього символьний рядок, закрити файл, відкрити його для читання і прочитати з нього символьний рядок довжиною в 6 символи і вивести його на екран. |
4. | Відкрити файл для запису, записати в нього символьний рядок, закрити файл, відкрити його для читання і прочитати з нього 10 символів і вивести на екран. |
5. | Відкрити файл для запису, записати в нього символьний рядок, закрити файл, відкрити його для читання і прочитати з нього символьний рядок довжиною в 4 символи і вивести його на екран. |
6. | Відкрити файл для запису, записати в нього символьний рядок, закрити файл, відкрити його для читання і прочитати з нього 13 символів, які вивести на екран. |
7. | Відкрити файл для запису, записати в нього символьний рядок, закрити файл, відкрити його для читання і прочитати з нього символьний рядок довжиною в 6 символи і вивести його на екран. |
8. | Відкрити файл для запису, записати в нього символьний рядок, закрити файл, відкрити його для читання і прочитати з нього символьний рядок довжиною в 14 символів і вивести його на екран. |
9. | Відкрити файл, записати в нього символьний рядок, закрити його і відкрити його для читання і прочитати 10 символів і вивести на екран. |
10. | Відкрити файл для запису, записати в нього символьний рядок, закрити файл, відкрити його для читання і прочитати з нього символьний рядок довжиною в 6 символи і вивести його на екран.. |
11. | Відкрити файл для запису, записати в нього символьний рядок, закрити файл, відкрити його для читання і прочитати з нього 7 символів в 7 змінних, які вивести на екран. |
12. | Відкрити файл для запису, записати в нього символьний рядок, закрити файл, відкрити його для читання і прочитати з нього символьний рядок довжиною в 14 символів і вивести його на екран. |
3 Методичні вказівки
1. Створити файл з розширенням .TXT на дску C в папці GxxB (де хх -номер групи), яка міститься в свою чергу в папці lk.
2. Відкрити файл для запису і передбачити повідомлення при його відкритті.
3. Записати запропоновані дані у файл за допомогою функції fprintf(). Закрити файл за допомогою функції fclose().
4. Відкрити файл для читання і записані дані прочитати з файлу в змінні, згідно умови задачі індивідуального завдання,, результати вивести на екран.
5. Закінчивши роботу з файлом, закрити його за допомогою функції fclose();
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. За допомогою якої функції закриваються файли?
Дата добавления: 2015-07-17; просмотров: 132 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Лабораторна робота № 21 | | | Лабораторна робота № 24 |