fclose
Defined in header <stdio.h> |
||
|---|---|---|
int fclose( FILE *stream ); |
Закрывает указанный поток файла. Любые не записанные буферизованные данные передаются в ОС. Любые не прочитанные буферизованные данные отбрасываются.
Независимо от успеха операции, поток больше не связан с файлом, а буфер, выделенный setbuf или setvbuf, при необходимости, также отсоединяется и освобождается, если использовалось автоматическое выделение.
Поведение не определено, если значение указателя stream используется после возвращения fclose.
Параметры
| stream | - | поток файла для закрытия |
Значение результата
0 при успехе, EOF в противном случае
Пример
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
const char* fname = "/tmp/unique_name.txt"; // or tmpnam(NULL);
int is_ok = EXIT_FAILURE;
FILE* fp = fopen(fname, "w+");
if (!fp) {
perror("File opening failed");
return is_ok;
}
fputs("Hello, world!\n", fp);
rewind(fp);
int c; // note: int, not char, required to handle EOF
while ((c = fgetc(fp)) != EOF) // standard C I/O file reading loop
putchar(c);
if (ferror(fp))
puts("I/O error when reading");
else if (feof(fp)) {
puts("End of file is reached successfully");
is_ok = EXIT_SUCCESS;
}
fclose(fp);
remove(fname);
return is_ok;
}Возможный вывод:
Hello, world! End of file is reached successfully
Ссылки
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.21.5.1 Функция fclose (с. 304)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.19.5.1 Функция fclose (с. 270)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 4.9.5.1 Функция fclose
См. также
|
(C11) |
открытие файла (функция) |
|
(C11) |
открытие существующего потока с другим именем (функция) |
Документация C++ для fclose |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/io/fclose