Нужно было мне написать кое-какую программу, пишущую результаты своей работы в файл. НО. Нужно было не допустить, чтобы файл оказался размером больше, чем 100Кб.
Как я решил эту проблему:
1. Открываем файл на добавление данных;
2. Получаем текущий размер файла;
3. Сравниваем максимально допустимый размер с текущим + размер записываемых данных;
4. Переоткрываем файл на перезапись;
5. Записываем данные;
6. Закрываем файл.
В целом всё элементарно за исключением шага №2, получения размера файла. Благо пришедший на помощь волшебник Гугл подсказал аж несколько вариантов получения размера файла. Я выбрал функцию filesize из заголовочного файла io.h, принимающая в качестве входного параметра дескриптор открытого файла и отдающая на выходе размер файла в байтах:
#include <iostream>
#include <io.h>
#include <tchar.h>
int _tmain(int argc, _TCHAR* argv[])
{
FILE *f;
char * filename = "file.txt";
char * data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
int maxsize = 1024 * 100;
f = fopen(filename,"a");
int size = filelength(fileno(f));
if ((size + strlen(data)) > maxsize){
fclose(f);
f = fopen(filename,"w");
}
fputs(data, f);
fclose(f);
return 0;
}
|
|
Webmoney Z163628999150, R617151845974
|
>int _tmain (int argc, _TCHAR* argv[])
фуууу, винда...
ой, спалился
1:20
Это не получение размера файла в C++. Скорее это С. В C++ используются классы ifstream/ofstream для работы с файлами.
p.s:
_tmain — это ужасно