Функція закриття файлу Fclose() 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Функція закриття файлу 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 складається з одного рядка

 

 

 

   

 

 

 

 

 

 

 

 

 

 

 

 

 

М м

ы

 

в с

е

-

м

о

л

о

д

ц

ы

 

!

\0

 
                                                               

 

 

Запустимо програму на виконання так:

 

Redaktor wchod_f

 

На екрані нічого не буде виведено а у файлі wchod_f.red буде:

М в - л ц ! \0

 

2. fprinf(stderr,...) - це вивід у стандартний потік помилок, а оскільки він пов'язаний з терміналом те це вивід на екран. також можна було - printf(...)

 

3. Якщо ім'я вхідного файлу буде мати розширення наприклад wchod_f.txt, те після приписування до нього розширення.red вийти невірне ім'я wchod_f.txt.red і буде помилка при спробі його відкрити. У цьому випадку спочатку потрібно перевірити їсти чи розширення(шляхом пошуку за допомогою strchr «крапки», потім скопіювати частина рядка до «крапки»).

 

4. Звичайно stderr направляється туди ж, куди й stdout. Якщо так, то повідомлення про помилку будуть виведені на екран, якщо stdout спрямований на екран монітора.

 



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 34; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.79.59 (0.006 с.)