Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Закрытие файла (потока)




 

Для закрытия потоков, используемых в программе, применяются стандартные функции fclose и fcloseall.

Один заданный поток закрывается функцией fclose. Ее прототип:

int fclose (FILE *stream);

где stream – поток.

Пример обращения к функции fclose:

fclose (f);

Если поток успешно закрыт, функция fclose возвращает значение 0. Если при закрытии потока произошла ошибка – значение EOF (-1).

Функция fcloseall закрывает все потоки, открытые с помощью fopen, кроме stdin, stdout, stderr. Прототип функции fcloseall:

int fcloseall();

Функция fcloseall возвращает количество закрытых потоков или значение EOF (-1), если при закрытии произошла ошибка.

Примечание. Функция perror позволяет вывести сообщение об ошибке при неуспешном закрытии файла. Ее прототип:

void perror(const char *s);

 

Пример:

FILE * fp;

fp=fopen("d.dat", "r");

if(!fp) perror("Нельзя открыть файл для чтения");

else fclose ("d.dat");

 

Удаление файла

 

Удалить файл можно с помощью функции remove. Ее прототип:

int remove (const char *filename);

где filename – указатель на строку с именем физического файла (имя файла).

Функция remove возвращает значение 0 при успешном удалении файла и не нуль в противном случае. Открытый файл необходимо предварительно закрыть.

 

Пример открытия и закрытия файла

 

В текстовый файл с именем rez.txt записываются результаты выполнения программы в начало нового файла, если файл не существует, или в конец существующего файла.

 

#include <stdio.h>

void main ()

{

int n; //номер теста

float y,x;

FILE *f; //Описание файловой переменной f (файла)

puts(“Введите x”);

scanf(“%f”,&x);

y=2*x;

f=fopen("rez.txt", "a"); //Открытие файла

puts("Номер теста ?");

scanf("%d",&n);

fprintf(f,"Тест N %d\n",n); //Запись в файл f значения

fprintf(f,"%f %f\n",x,y);

fclose(f); //Закрытие файла

fflush(stdin); getchar();

}

 

В результате первого выполнения программы в текущем каталоге будет создан файл с именем rez.txt. В его начало запишутся значения n, x, y. При последующих запусках программы на выполнение значения n, x, y будут записываться в конец файла rez.txt, на что указывает режим "a" открытия файла в функции fopen. Отсутствие символа "t" или "b" в режиме открытия файла "говорит" о работе с текстовым файлом (но не расширение txt в имени файла).

8.4 Ввод/вывод в поток



Основные понятия

Ввод/вывод в поток можно осуществить разными способами:

- в виде последовательности байтов;

- в виде символов и строк;

- с использованием форматных преобразований.

Операции ввода/вывода выполняются, начиная с текущей позиции потока. Текущая позиция определяется положением указателя потока. Указатель потока устанавливается на начало или конец файла при открытии в соответствии с режимом открытия. После каждой операции ввода/вывода указатель потока автоматически изменяется.

 


.

mylektsii.ru - Мои Лекции - 2015-2019 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал