Получение размера файла в C++

Нужно было мне написать кое-какую программу, пишущую результаты своей работы в файл. НО. Нужно было не допустить, чтобы файл оказался размером больше, чем 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;
}

Поблагодарить автора

3 Responses to Получение размера файла в C++

  1. Это не получение размера файла в C++. Скорее это С. В C++ используются классы ifstream/ofstream для работы с файлами. :)

    p.s:

    _tmain — это ужасно :)

Оставить комментарий

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>