Функция fclose
Функция fclose закрывает файловый поток, который был ранее открыт с помощью функции fopen. В первый параметр мы передаем указатель на объект FILE, который идентифицирует закрываемый поток. После успешного закрытия все буферизованные данные записываются на диск, а сам поток становится недействительным. Функция возвращает 0 при успешном закрытии и EOF в случае ошибки.
Синтаксис
int fclose(FILE *stream);
Пример
Давайте откроем файл для записи, запишем в него строку и закроем поток:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
FILE *fp = fopen("test.txt", "w");
if (fp == nullptr)
{
cout << "Failed to open file" << endl;
return 1;
}
fprintf(fp, "abcde");
if (fclose(fp) == 0)
{
cout << "File closed successfully" << endl;
}
else
{
cout << "Failed to close file" << endl;
}
return 0;
}
Результат выполнения кода:
"File closed successfully"
Пример
Давайте прочитаем содержимое файла и корректно закроем поток после чтения:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
FILE *fp = fopen("test.txt", "r");
if (fp == nullptr)
{
cout << "Failed to open file" << endl;
return 1;
}
char buf[100];
if (fgets(buf, sizeof(buf), fp) != nullptr)
{
cout << buf << endl;
}
fclose(fp);
return 0;
}
Результат выполнения кода:
"abcde"