Пример использования структуры FILE для записи в файл
Лабораторная работа №3
РАБОТА С ФАЙЛАМИ
1. Цель работы: изучить методы доступа к файлам в среде Microsoft Developer Studio (Visual C++).
Краткие теоретические сведения.
2.1. Работа с файлами в C/C++.
Для работы с файлами используется структура FILE, функции которой перечислены ниже.
Прежде всего, в программе необходимо создать указатель на структуру FILE, в который будет помещен адрес открытого файла с помощью функции fopen():
FILE *fopen(const char * filename, const char *mode);
Функция fopen()открывает файл и инициализирует связанный с ним поток данных.
Параметры функции: filename – имя открываемого файла; mode – режим открытия файла.
Режим | Описание |
r | Файл открывается только для чтения |
w | Файл открывается только для записи с усечением. Если файл не существует, он создается в каталоге, заданном в параметре filename. Указатель записи-чтения устанавливается в нуль. После закрытия файл имеет новый размер, соответствующий текущему положению указателя записи-чтения |
а | Файл открывается для пополнения, т.е. после его открытия указатель записи-чтения устанавливается на позицию конца файла |
r+ | Файл открывается для обновления. Он доступен для чтения и записи, но после закрытия не происходит усечения файла. Сразу после открытия указатель записи-чтения устанавливается в начало файла |
W+ | Файл открывается для обновления, т.е. доступен для чтения и записи. Если файл не существует, он создается в каталоге, заданном в параметре filename. Указатель записи-чтения устанавливается в нуль. После закрытия файл имеет новый размер, соответствующий текущему положению указателя записи-чтения |
а+ | Файл открывается для обновления, т.е. доступен для чтения и записи. После его открытия указатель записи-чтения устанавливается в позицию конца файла. После закрытия файла не происходит его усечения |
Спецификация режима может быть дополнена символами t или b, указывающими, в текстовом или двоичном режиме открывается файл.
|
|
Возвращаемое значение:указатель на структуру типа FILE. Этот указатель затем передается в качестве аргумента следующим функциям, работающим с потоком. Если файл не может быть открыт, возвращается NULL-указатель.
Ниже перечислены функции чтения и записи в файл данных.
int fputc(int character, FILE *stream);
Функция записывает один символв файл.
Параметры функции:character – записываемый символ; *stream – указатель на структуру типа FILE.
Возвращаемое значение:записанный в файл символ илиEOFв случае ошибки.
int fputs(const char* string, FILE *stream);
Функция записывает символьную строку в файл. Перенос завершается при достижении символа конца строки '\0' в переменной string. Сам нуль-терминатор в файл не передается и не заменяется символом '\n'.
|
|
Параметры функции:string – строка символов; *stream – указатель на структуру типа FILE.
Возвращаемое значение: код последнего записанного в файл символа. В случае ошибки возвращается EOF.
int fgetc(FILE* stream);
Функция считывает символ из файла stream. После считывания символа указатель записи-чтения файла устанавливается в новую позицию.
Возвращаемое значение:считанный символ в виде целого беззнакового значения типа int; EOFозначает ошибку или конец файла.
char* fgets(char string, int n, FILE* stream);
Функция считывает строку из файла stream до тех пор, пока не будут считаны nсимволов, либо символ конца строки '\n', либо не будет достигнут конец файла. Символ '\n' не передается в считанную строку. Функция автоматически дополняет полученную строку нуль-терминатором '\0'.
Возвращаемое значение:указатель на string, а в случае ошибки или при получении символа конца файла — NULL-указатель.
int fseek(FILE *stream, long offset, int from_where);
Функция передвигает указатель записи-чтения файла на заданное аргументом offset количество байтов. Аргумент from_whereзадает точку отсчета для сдвига. Для файлов, открытых в двоичном режиме, количество байтов смещения указателя соответствует числу символов, на которые должен передвинуться указатель записи-чтения файла (может быть также и отрицательным). Для файлов, открытых в текстовом режиме, количество байтов смещения должно вычисляться с помощью функции ftell(), причем аргумент from_whereдолжен быть равен SEEK_SET. Для аргумента from_whereмогут быть заданы три различные константы:
|
|
§ SEEK_CUR – сдвиг выполняется от текущей позиции указателя чтения-записи файла;
§ SEEK_END – сдвиг выполняется от конца файла;
§ SEEK_SET – сдвиг выполняется от начала файла.
Возвращаемое значение:нуль в случае успеха, в противном случае — любое ненулевое значение.
Пример использования структуры FILE для записи в файл
#include <iostream.h>
#include <stdio.h>
void main()
{ FILE *file; //объявили указатель на структуру FILE
char* file_name = "file.txt"; //определили имя файла
char stroka[50] = "0123456789"; //определили строку для записи в файл
file = fopen( file_name, "w" ); //открыли файл на запись
fputs( stroka, file ); //поместили строку в файл
fputs( "\n", file); //записали в файл символ переноса строки
fputs( stroka, file); //еще раз поместили строку в файл
fclose( file ); //закрыли файл
}
Дата добавления: 2018-04-05; просмотров: 205; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!