Мне известно, что ваш вопрос помечен Windows, и Брайан Р. Бонди дал вам лучший ответ на ваш вопрос, если вы точно знаете, что вам не придется переносить приложение на другие платформы. Однако, если вам может потребоваться перенести ваше приложение на другие платформы, вы можете захотеть сделать что-то более похожее на то, что предложил Адриан Корниш в качестве ответа на вопрос «Как создать файл размером« x »?» найдено в Как создать файл размером "x"? .
FILE *fp=fopen("myfile", "w");
fseek(fp, 1024*1024, SEEK_SET);
fputc('\n', fp);
fclose(fp);
Конечно, добавлен поворот. Ответ, предложенный Адрианом Корнишем, использует функцию fseek, которая имеет следующую подпись.
int fseek ( FILE * stream, long int offset, int origin );
Проблема в том, что вы хотите создать очень большой файл с размером файла, выходящим за пределы 32-разрядного целого числа. Вам нужно использовать 64-битный эквивалент fseek. К сожалению, на разных платформах у него разные имена.
Файл заголовка LargeFileSupport.h находится по адресу http://mosaik -aligner.googlecode.com / svn-history / r2 / trunk / src / CommonSource / Utilities / LargeFileSupport.h предлагает решение этой проблемы .
Это позволит вам написать следующую функцию.
#include "LargeFileSupport.h"
/* Include other headers. */
bool createLargeFile(const char * filename, off_type size)
{
FILE *fp = fopen(filename, "w");
if (!fp)
{
return false;
}
fseek64(fp, size, SEEK_SET);
fputc('\n', fp);
fclose(fp);
}
Я думал, что добавлю это на тот случай, если эта информация будет вам полезна.