![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Перевірка ознаки кінця файлуСодержание книги
Поиск на нашем сайте
Так як при кожній операції введення / виводу відбувається переміщення покажчика поточної позиції у файлі, в якийсь момент покажчик досягає кінця файлу. Структура типу 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.Модифікації форматів Функція форматованого виведення printf () Структура (синтаксис) звернення до функції: printf ("рядок формату", арг1, арг2,..., аргN); В якості аргументів функції арг1... аргN використовуються ідентифікатори змінних або вирази. Список аргументів може бути порожнім. Рядок формату записується в подвійних лапках і може містити: будь-який текст; специфікатори форматів (за кількістю аргументів), позначаються символом%, містять інформацію про тип виведеного значення і його модифікації; керуючі символи. Нагадаємо, що керуючий символ, або ESC-послідовність, формується з символу зворотної похилої риси \, званого в мові C escape-символом, і латинської літери. Приклади керуючих послідовностей наведені в п. 1.3.1. Основні формати Кожному аргументу повинен відповідати тільки один специфікатор формату. Вид формату визначається типом аргументу. Цілі числа: % D - аргумент розглядається як ціле 10-тичного число зі знаком; % U - ціле 10-тично без знака; % X - 16-річної ціле без знаку; % O - 8-річно ціле без знаку. Речові числа: % F - аргумент записується у формі дійсного числа з фіксованою крапкою (наприклад, 0.036); % E - аргумент записується у формі числа з плаваючою точкою. Символи і рядки: % C - аргумент розглядається як значення типу char, і на екран виводиться один символ; % S - аргумент розглядається як рядок. Повернемося до програми "двічі два" і додамо в неї вивід результату на екран: # Include <stdio.h> int main (void) { float x = 2., y; y = x * x; printf ("\ n y (% f) =% f", x, y); return 0;} Керуюча рядок містить ESC-символ перекладу рядка '\ n', текст і два специфікатора формату (% f): перший для аргументу x, другий - для аргументу y. Виклик функції printf () можна записати і в іншому вигляді, включивши в неї обчислення виразу: # Include <stdio.h> int main (void) { float x2.; printf ("\ n y (% f) =% f", x, x * x); return 0;} В результаті на екрані: y (2.000000) = 4.000000. Модифікації форматів Специфікатори формату цілих чисел можна записати у вигляді: % Nd,% Nu,% No,% Nx, де N - натуральне число, що визначає кількість позицій, що відводяться під значення числа (ширина поля виведення). Для форматів дійсних чисел специфікатор формату представляється у вигляді: % N.Mf або% N.Me, де N і M - натуральні числа, що визначають загальне число позицій, відведених під число, N (ширина поля виведення) і число знаків у дробовій частині M (точність відображення). Модифікуємо формати в нашому прикладі: # Include <stdio.h> int main (void) { float x = 2.; printf ("\ n y (% 4.1f) =% 6.2f", x, x * x); return 0; } Результат на екрані: y (2.0) = 4.00. Зауважимо, що відповідно до використовуваних форматами для значення змінної x відведено 4, а для y - 6 позицій. Це знаходить своє відображення і на екрані, тобто після відкриваючої круглої дужки присутній один пробіл (саме значення x займає 3 позиції), а після знаку рівності - 2 пробілу (y займає 4 позиції).
При неправильно заданому форматі, коли ширина поля виведення виявляється менше, ніж необхідно для представлення значення змінної, компілятор мови додає відсутні позиції, виправляючи помилку програміста. Аналогічно можна форматувати висновок символьних рядків:% N.Ms, тут в специфікатор перетворення N - ширина поля виведення рядка, M - максимальна кількість виведених на екран символів. Наприклад, при виконанні оператора printf ("% 4s% 3d% 7.3s \ n", "Вартість", 1400, "рублів"); на екрані буде виведена наступна інформація: Вартість (1 пробіл) 1400 (5 пробілів) руб Питання для контролю: 1. Що робить команда printf()? 2. Що може містити рядок функції printf(), що знаходиться в лапках? 3. Які основні формати для функції printf()? 4. Які є модифікації форматів? Література: 1. Шилдт Г.: Пер. с англ. –М.: Издательский дом “Вильямс”, 2002. –704с. – с. 302-305 Урок №45 (згідно робочої навчальної програми)
|
|||||||
Последнее изменение этой страницы: 2016-08-10; просмотров: 327; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.89.112 (0.011 с.) |