- •Елементи мови с.Основні символи
- •Ключові слова
- •Ідентифікатори
- •Константи
- •Лексеми
- •Коментарі
- •Умовні оператори. Логічні вирази
- •Форми оператора if
- •Оператор вибору switch
- •Перерахування типів
- •Перетворення типів
- •Оператори циклу
- •Оператор while
- •Оператор for
- •Оператор do-while
- •Оператори переходу
- •Cтруктури
- •Об'єднання (суміші)
- •Робота з структурами.
- •Ініціалізація структур
- •Робота з обєднаннями
- •Визначення об'єктів та типів
- •Методи доступу до елементів масивів
- •Покажчики на багатовимірні масиви
- •Операції з вказівниками
- •Робота з покажчиками.
- •Покажчики на структуру
- •Масиви структур
- •Динамічне розміщення масивів
- •Робота з динамічними масивами
- •Робота з непрямою адресацією
- •Робота з покажчиками як параметрами функцій
- •Використання вказівників
- •Операції з вказівниками
- •Використання вказівників в програмі
- •Робота з файлами
- •Відкриття файлу
- •Обробка відкритого файлу
- •Перевірка ознаки кінця файлу
- •Закриття файлу
- •Функції введення-виведення
- •Робота з текстовими файлами
- •Функція форматованого виведення printf ()
- •Основні формати
- •Модифікації форматів
- •Функція форматованого введення scanf ()
- •Робота функції scanf ()
- •Призначеня функцій бібліотеки введення-виведення
- •Макрокоманди
- •Потокові інтерфейси введення-виведення
- •Ближні покажчики (near)
- •Дальні покажчики (far)
- •Покажчики huge
- •Функції для роботи з рядками
- •Динамічні рядки, клас string
- •Визначення поточної робочої директорії
- •Визначення поточного каталогу диска
- •Визначення / встановленн поточного диска
- •Пошук файлу
- •Створення, видалення, зміна директорій
- •Приклад програми для роботи з директоріями
- •Перегляд каталогу диска
- •Параметри структури ffblk
- •Робота з клавіатурою
- •Робота з файлами
- •Послідовний доступ до елементів двійкових файлів
- •Організація довільного доступу до елементів двійкових файлів
- •Робота динамічних структур даних.
- •Функції управління пам'яттю
- •Атрибути файлів.
- •Параметри
- •Динамічні структури даніх
- •Лінійні списки
- •Стек. Загальні поняття.
- •Приклад використання стеку
- •Основні визначення
- •Приклад використання дерев
Обробка відкритого файлу
Яким чином можна прочитати вже відкритий файл або записати в нього інформацію? Для цього в мові 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.Модифікації форматів
