Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 322; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.42.233 (0.006 с.) |