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

Быстрое создание бинарного файла заданного размера - C++

Восстановить пароль Регистрация
 
SMYH
 Аватар для SMYH
2 / 2 / 0
Регистрация: 23.10.2013
Сообщений: 38
31.03.2014, 23:25     Быстрое создание бинарного файла заданного размера #1
Собственно, вопрос в теме. Как быстро выделить память под файл? Можно, конечно, методично записать в файл массив необходимого размера, но это долго. Нужно что-то вроде new.
На форуме вроде есть ответ, но там код для текстового файла.
C++
1
2
3
4
5
6
7
8
9
10
#include <fstream>
int main(void)
{
    std::ofstream FILE_SAVE; 
    FILE_SAVE.open("ddddd.dat");
    FILE_SAVE.seekp(9999, 0);
    FILE_SAVE << '\0';
    FILE_SAVE.close();
    return 0;
}
Быстрое создание пустого файла определенного размера
C++
1
2
FILE_SAVE.open("ddddd.dat",ios::binary|ios::out);
 FILE_SAVE.seekp(9999, 0);
Файл создается, но размер его не 9999 байт, а 0.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wlk
49 / 49 / 13
Регистрация: 07.12.2011
Сообщений: 133
01.04.2014, 11:54     Быстрое создание бинарного файла заданного размера #2
А если попробовать функцию _chsize()?
SMYH
 Аватар для SMYH
2 / 2 / 0
Регистрация: 23.10.2013
Сообщений: 38
01.04.2014, 12:09  [ТС]     Быстрое создание бинарного файла заданного размера #3
Приведи пример работы, пожалуйста. Например, создание файла в 100 байт.
Wlk
49 / 49 / 13
Регистрация: 07.12.2011
Сообщений: 133
01.04.2014, 12:31     Быстрое создание бинарного файла заданного размера #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include <iostream>
 
#include  "fcntl.h"
#include <io.h>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    
    char* path="d:\\cpp_test\\1.bin";
    long size=100;
    int handle=open(path,O_CREAT|O_RDWR|O_BINARY);
    if(handle!=-1)
    {
        chsize(handle,size);
        close(handle);
    }
    system("PAUSE >> NULL");
    return 0;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.04.2014, 16:07     Быстрое создание бинарного файла заданного размера #5
Так разве не работает?
C++
1
2
3
4
5
    std::ofstream FILE_SAVE; 
    FILE_SAVE.open("ddddd.dat", ios::binary | ios::out);
    FILE_SAVE.seekp(9999);
    FILE_SAVE << '\0';
    FILE_SAVE.close();
Или так:
C++
1
2
3
4
5
6
    std::ofstream FILE_SAVE; 
    FILE_SAVE.open("ddddd.dat", ios::binary | ios::out);
    FILE_SAVE.seekp(9999);
    const char p = '\0';
    FILE_SAVE.write(&p, 1);
    FILE_SAVE.close();
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
01.04.2014, 16:07     Быстрое создание бинарного файла заданного размера #6
Цитата Сообщение от alsav22 Посмотреть сообщение
Так разве не работает?
Вроде работает.
Yandex
Объявления
01.04.2014, 16:07     Быстрое создание бинарного файла заданного размера
Ответ Создать тему
Опции темы

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