Форум программистов, компьютерный форум CyberForum.ru

Узнать размер файла - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 113, средняя оценка - 4.76
Aero93
8 / 8 / 1
Регистрация: 19.12.2011
Сообщений: 35
09.07.2012, 22:50     Узнать размер файла #1
Дорогие форумчане! Есть у меня есть файл xxxxx.clk(все данные в нем строчные), он весит n-ое количество мегабайт. Нужно задать массив структур из этих строк. Почитал в интернете, нужно использовать библиотеки sys.h\types.h\stat.h . Но их нету в стандартном наборе ни CodeBlock'а, ни Builder'а, ни DEV'а... Покажите на примере, как это сделать?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2012, 22:50     Узнать размер файла
Посмотрите здесь:

Узнать размер файла C++
C++ Узнать размер консоли
Как узнать текущий размер копируемого файла? C++
Узнать размер массива C++
Не выходит узнать размер файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
09.07.2012, 23:18     Узнать размер файла #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
попробуйте
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
  fstream file("C:\\xxxxx.clk");
     int size = 0;
    file.seekg (0, std::ios::end);
    size = file.tellg();
    cout << "Вашь фаил весит : " << size << " баит" << endl;
    file.close();
return 0;
}
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
09.07.2012, 23:25     Узнать размер файла #3
Цитата Сообщение от Aero93 Посмотреть сообщение
Но их нету в стандартном наборе ни CodeBlock'а, ни Builder'а, ни DEV'а
во первых, то что вы перечислили это были IDE, во вторых плохо искали
Цитата Сообщение от xADMIRALx Посмотреть сообщение
Зачем заачем они ?
чтобы получить информацию о файле
вот пример

C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
#include <sys/stat.h>
int main()
{
    struct stat fi;
    stat("xxxxx.clk",&fi);
    printf("file size: %d",fi.st_size);
    return 0;
}
xADMIRALx
09.07.2012, 23:31
  #4

Не по теме:

погаречился с зачемом,изменил песадж

Aero93
8 / 8 / 1
Регистрация: 19.12.2011
Сообщений: 35
10.07.2012, 02:26  [ТС]     Узнать размер файла #5
Спасибо! и я что-то не подумал, что есть такая библиотека <sys/stat.h>
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
10.07.2012, 10:22     Узнать размер файла #6
Aero93, вы знаете, я до сих пор не могу поверить в то, что есть такая библиотека. Заголовочный файл - да, но библиотека... Ну не знаю, не знаю
Yksus01
0 / 0 / 0
Регистрация: 16.06.2016
Сообщений: 46
16.06.2016, 21:44     Узнать размер файла #7
Цитата Сообщение от xADMIRALx Посмотреть сообщение
попробуйте
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
  fstream file("C:\\xxxxx.clk");
     int size = 0;
    file.seekg (0, std::ios::end);
    size = file.tellg();
    cout << "Вашь фаил весит : " << size << " баит" << endl;
    file.close();
return 0;
}
После компиляции, пишет что ошибок ноль, но Warning в тексте есть, с чем это может быть связано ?
warning C4244: '=' : conversion from 'std::streamoff' to 'int', possible loss of data
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

Сам код:
Код
	fstream file("my-file.dll");
	int size = 0;
	file.seekg(0, std::ios::end);
	size = file.tellg();
	if (size == 36001)
	{
		if (hWnd != NULL)
		{
			PostMessage(hWnd, WM_QUIT, 0, 0);
		}
	}
	file.close();
	
	return 0;
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
16.06.2016, 22:16     Узнать размер файла #8
Цитата Сообщение от Yksus01 Посмотреть сообщение
с чем это может быть связано ?
с тем, что tellg возвращает не int
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2016, 07:42     Узнать размер файла
Еще ссылки по теме:

Как узнать размер файла? (студия 2013) C++
Как узнать размер открытого файла C++
Как узнать текущий размер файла, открытого для записи? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yksus01
0 / 0 / 0
Регистрация: 16.06.2016
Сообщений: 46
17.06.2016, 07:42     Узнать размер файла #9
Цитата Сообщение от Croessmah Посмотреть сообщение
с тем, что tellg возвращает не int
Если преобразовать в Int - таким способом:
size = (int)file.tellg();

логичное будет или переписать получение размера ?

Добавлено через 9 часов 22 минуты
Croessmah, Нашел одну статейку на этом форуме, там tellq приравнивался streamoff
сделал замену в коде:
с int size = 0;
на streamoff size = 0;
Yandex
Объявления
17.06.2016, 07:42     Узнать размер файла
Ответ Создать тему
Опции темы

Текущее время: 00:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru