B1.1. Операции над файлами
Ниже перечислены функции, оперирующие с файлами. Тип size_t - беззнаковый целочисленный тип, используемый для описания результата оператора sizeof.
FILE *fopen(const char *filename, const char *mode);
fopen открывает файл с заданным именем и возвращает поток или NULL, если попытка открытия оказалась неудачной. Режим
"r" | текстовый файл открывается для чтения (от |
"w" | текстовый файл создается для записи; старое содержимое (если оно было) выбрасывается (от |
"а" | текстовый файл открывается или создается для записи в конец файла (от |
"r+" | текстовый файл открывается для исправления (т. е. для чтения и для записи); |
"w+" | текстовый файл создается для исправления; старое содержимое (если оно было) выбрасывается; |
"a+" | текстовый файл открывается или создается для исправления уже существующей информации и добавления новой в конец файла. |
Режим "исправления" позволяет читать и писать в один и тот же файл; при переходах от операций чтения к операциям записи и обратно должны осуществляться обращения к fflush или к функции позиционирования файла. Если указатель режима дополнить буквой
FILE *freopen(const char *filename, const char *mode, FILE *stream);
freopen открывает файл с указанным режимом и связывает его с потоком
int fflush(FILE *stream);
Применяемая к потоку вывода функция fflush производит дозапись всех оставшихся в буфере (еще не записанных) данных, для потока ввода эта функция не определена. Возвращает EOF в случае возникшей при записи ошибки или нуль в противном случае. Обращение вида
int fclose(FILE *stream);
fсlose производит дозапись еще не записанных буферизованных данных, сбрасывает несчитанный буферизованный ввод, освобождает все автоматически запрошенные буфера, после чего закрывает поток. Возвращает EOF в случае ошибки и нуль в противном случае.
int remove(const char *filename);
remove удаляет файл с указанным именем; последующая попытка открыть файл с этим именем вызовет ошибку. Возвращает ненулевое значение в случае неудачной попытки.
int rename(const char *oldname, const char *newname);
rename заменяет имя файла; возвращает ненулевое значение в случае, если попытка изменить имя оказалась неудачной. Первый параметр задает старое имя, второй - новое.
FILE *tmpfile(void);
tmpfile создает временный файл с режимом доступа "wb+", который автоматически удаляется при его закрытии или обычном завершении программой своей работы. Эта функция возвращает поток или, если не смогла создать файл, NULL.
char *tmpnam(char s[L_tmpnam]);
tmpnam(NULL) создает строку, не совпадающую ни с одним из имен существующих файлов, и возвращает указатель на внутренний статический массив.
int setvbuf(FILE *stream, char *buf, int mode, size_t size);