Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
933 Кб
Скачать
☆

13.4. Средства языка с

Прототипы всех функций обмена данных хранятся в файле stdio.h.

13.4.1. Открытие и закрытие файла

Прототип: FILE *fopen(char *a, char *b); - открытие файла.

Параметры:

- a – имя файла (полный путь);

- b – способ обработки:

- r – только чтение;

- w – только запись;

- a – только добавление в конец существующего файла.

Параметры способа обработки r и w могут дополняться символом +, который означает также и возможность изменения содержания файла.

Пример. w+ - создать файл и затем изменять.

Возвращаемое значение: указатель на файл (при нормальном открытии) | NULL (при ошибке).

Пример.

FILE *p; // Указатель на файл. Должен быть описан в программе

..................................

p=fopen("u:\c_lections\examples\out.dat", "r");

Прототип: int fclose(FILE *); - закрытие файла.

Возвращаемое значение: 0 - нормальное закрытие | EOF - ошибка.

Замечание. Если файлы сохраняются в папке запуска, то достаточно указать имя файла.

Пример.

p=fopen("out.dat", "r");

В случае отсутствия входного файла в указанной папке необходимо обработать это событие, например, следующим образом:

if(p==NULL){

printf(“Ошибка открытия файла out.dat\n”);

exit(0);// Выход из задачи Прототип в файле stdlib.h

}

13.4.2. Основные функции обмена

Правила обращения к ним практически совпадают с ранее описанными для функций стандартных потоков ввода-вывода stdin и stdout. Появляется лишь дополнительный параметр – указатель на файл: FILE *.

Прототипы:

int fscanf(FILE *file, <управляющая строка>, <список данных>); См.scanf.

int fprintf(FILE *file, <управляющая строка>[, <список данных>]); См.printf.

int getc(FILE *file); - чтение одного символа. См.getchar.

int putc(int symb, FILE *file); - запись одного символа. См.putchar.

char* fgets(char *string, int max_len, FILE *file); Читает max_len-1 символ из файла или до символа '\n' (если раньше встретится). Добавляет в конец прочитанной строки символ '\0' вместо символа '\n'. См.gets.

int fputs(char *string, FILE *file); См.puts.

Замечание. Символ '\0' в файл не записывается и символ '\n' не добавляется. Если в этом есть необходимость, следует добавлять символ '\n' самостоятельно.

int feof(FILE *file); Возвращает ненулевое значение, если очередная операция чтения из файла не находит данных (достигается конец файла), поэтому такую проверку надо выполнять сразу за операцией чтения.

Пример.

fscanf(in,"%f%f%f",&a,&b,&eps);

if(feof(in)){

………….

}

13.5. Средства языка Basic

13.5.1. Открытие и закрытие файла Инструкция FileOpen

Открывает файл.

Формат:

Public Sub FileOpen(ByVal FileNumber As Integer, _ - дескриптор файла,

ByVal FileName As String, _ - полный путь к файлу,

ByVal Mode As OpenMode) - режим открытия.

Здесь:

- дескриптор – идентификатор файла в программе – целое значение в диапазоне [1 - 511];

- полный путь – строка в кавычках либо выражение, результатом вычисления которого является строка, указывающая путь к файлу;

- режим – значение из перечислимого типа OpenMode:

- input – чтение;

- output – запись с начала (старая информация стирается);

- append – запись (добавление) в конец файла.

Инструкция FileOpen должна предшествовать всем инструкциям, непосредственно работающим с содержанием файла.

Если по указанному пути файл не найден, то во время выполнения выдается сообщение FileNotFoundException не обработано и программа прерывается.

Если файл, открываемый в режиме output или append не существует в момент открытия, то он создается в директории, заданной путем.

Пример.

FileOpen(5, "u:\c_lections\examples\out.txt", OpenMode.output)

FileOpen(6, "u:\c_lections\examples\enter.txt”,OpenMode.input)

При переносе задачи на другой компьютер с иной файловой структурой (другая вложенность и имена папок) удобно использовать не полный путь к открываемому файлу, а путь относительно папки, в которой создается exe файл приложения. В нашем случае, если открываемые файлы находятся в папке examples, то инструкции открытия примут вид:

FileOpen(5, "..\..\out.txt", OpenMode.output)

FileOpen(6, "..\..\enter.txt”,OpenMode.input)

Символы ..\ ..\ означает подъем на 2 уровня выше по структуре вложенности папок, т.к. exe файл создается в папке examples\bin\debug.