Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

буфер...

2.5K
31 октября 2002 года
budger
1 / / 31.10.2002
Люди, подскажите!
Надо взять размер файла и создать буфер в 2,5 раза больший, чем длина файла.Делаю так:
............
CFile mFile;
CFileException e;
mFile.Open( "123.dat", CFile::modeReadWrite, &e );
m_FileSize=mFile.GetLength();
............
double bufsize;
bufsize=m_FileSize*2+ceil(m_FileSize/2);
............
char buf[bufsize];
...и вот тут он пишет
error C2057: expected constant expression
...мол, ожидается постоянное выражение...
Неужели при определении длинны нельзя использовать переменные? (если ставлю заместо bufsize любое число, то все работает).
Как в таком случае поступать?
Спасибо.
476
31 октября 2002 года
man2002ua
218 / / 16.10.2002
Цитата:
Originally posted by budger
Люди, подскажите!
Надо взять размер файла и создать буфер в 2,5 раза больший, чем длина файла.Делаю так:
............
CFile mFile;
CFileException e;
mFile.Open( "123.dat", CFile::modeReadWrite, &e );
m_FileSize=mFile.GetLength();
............
double bufsize;
bufsize=m_FileSize*2+ceil(m_FileSize/2);
............
char buf[bufsize];
...и вот тут он пишет
error C2057: expected constant expression
...мол, ожидается постоянное выражение...
Неужели при определении длинны нельзя использовать переменные? (если ставлю заместо bufsize любое число, то все работает).
Как в таком случае поступать?
Спасибо.



Выделять динамически, как же еще? Лично я использую для операций с большими объемами VirtualAlloc, для маленьких - используй что хочешь...

380
01 ноября 2002 года
Arestov
285 / / 20.09.2000
Цитата:
Originally posted by budger
Люди, подскажите!
Надо взять размер файла и создать буфер в 2,5 раза больший, чем длина файла.Делаю так:
............
CFile mFile;
CFileException e;
mFile.Open( "123.dat", CFile::modeReadWrite, &e );
m_FileSize=mFile.GetLength();
............
double bufsize;
bufsize=m_FileSize*2+ceil(m_FileSize/2);
............
char buf[bufsize];
...и вот тут он пишет
error C2057: expected constant expression
...мол, ожидается постоянное выражение...
Неужели при определении длинны нельзя использовать переменные? (если ставлю заместо bufsize любое число, то все работает).
Как в таком случае поступать?
Спасибо.



чтобы сделать 2,5 от N достаточно написать :

(N * 5) / 2 что гораздо проще чем bufsize=m_FileSize*2+ceil(m_FileSize/2);


CFile mFile;
CFileException e;
mFile.Open( "123.dat", CFile::modeReadWrite, &e );
m_FileSize=mFile.GetLength();
char* pbuf = new char[(m_FileSize*5)/2];
...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог