Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Функція закриття файлу Fclose()Содержание книги
Поиск на нашем сайте При закритті файлу очищаються буфери. fclose() повертає 0 при успішному закритті й EOF в інших випадках if (fclose(f)!=0) printf(“Помилка при закритті файлу %s\n”,argv[0]);
тип main(int argc, char *argv[])
argc - у параметрів при запуску програми, переданих у функцію main argv - покажчик на масив покажчиків, кількість його елементів це покажчик на окремий параметр командного рядка при запуску програми.
Приклад програми (яка відкриває текстовий файл, редагує його залишаючи кожен 3-й символ і перезаписує його в інший файл із розширенням red):
#include <stdio.h> #include <stdlib.h> // різні функції в стилі З #include <string.h> // для роботи з рядками int main(int argc, char *argv[]) {FILE *in,*out // покажчики на вхідний вихідний файли int ch; char name_f[40]; // під ім'я вихідного файлу int i=0; // лічильник символів if (argc<2) // якщо при запуску програми не зазначене ім'я вхідного файлу {fprintf(stderr,”Запустіть програму так: %s ім'я_вхідного файлу \n”,argv[0]); exit (1);} // еквівалентно: return 1, де 1 або будь-яке інша не рівне 0, це помилка if ((in=fopen(argv[1],”r”)) == null) //якщо помилка при відкритті вхідного файлу для читання {fprintf(stderr,”Файл \”%s\” не відкривається. \n”, argv[1]); exit(2); } strcpy(name_f,argv[1]); // копіювання імені вхідного файлу в name_f strcat(name_f,”.red”); // додавання розширення до імені if ((out=fopen(name,”w”))==null) // якщо помилка при відкритті вихідного файлу {fprintf(stderr,”Файл \”%s\” не відкривається.\n”,name_f); exit(3);} while ((ch=getc(in)!=eof) // якщо не помилка читання й не кінець файлу if (i++%3==0) putc(ch,out); // вивід 3-го символа у вихідний файл if ((fclose(in)!=0)||((fclose(out)!=0)) // якщо помилка при закритті вхідного або вихідного// файлу fprint(stderr,”Помилка при записі вхідного й\або вихідного файлу. \n”); return 0; } ____________________________________________________________________ Розбір програми 1. Нехай ім'я файлу утримуючу цю програму - Redaktor, нехай ім'я вхідного файлу - wchod_f, і нехай файл wchod_f складається з одного рядка
Запустимо програму на виконання так:
Redaktor wchod_f
На екрані нічого не буде виведено а у файлі wchod_f.red буде:
2. fprinf(stderr,...) - це вивід у стандартний потік помилок, а оскільки він пов'язаний з терміналом те це вивід на екран. також можна було - printf(...)
3. Якщо ім'я вхідного файлу буде мати розширення наприклад wchod_f.txt, те після приписування до нього розширення.red вийти невірне ім'я wchod_f.txt.red і буде помилка при спробі його відкрити. У цьому випадку спочатку потрібно перевірити їсти чи розширення(шляхом пошуку за допомогою strchr «крапки», потім скопіювати частина рядка до «крапки»).
4. Звичайно stderr направляється туди ж, куди й stdout. Якщо так, то повідомлення про помилку будуть виведені на екран, якщо stdout спрямований на екран монітора.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2021-12-15; просмотров: 89; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.007 с.) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||