如何在C中创建具有已定义大小的文件?项目需要在Windows和Linux上工作,所以我不能使用创建文件功能...
我尝试使用随机字符创建char数组并将它们写入文件,但我需要的文件大小比我可以这样做的大。
答案 0 :(得分:2)
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#define CHUNK 4096
#define NUMCHUNKS 1024
char chunk[CHUNK];
int main(int argc, char *argv[])
{
FILE *f;
int i;
memset(chunk, 0, CHUNK);
f = fopen("/tmp/myfile", "w");
if (f == NULL) return 1;
for (i = 0; i < NUMCHUNKS; ++i) {
fwrite(chunk, CHUNK, 1, f);
}
fclose(f);
return 0;
}
应该很容易将其移植到Windows。在linux上测试过。
由于我不允许发表评论(但是?):此方法创建一个文件,而不是一个“洞”。 这意味着该空间确实将在设备上分配。如果您只对创建具有某个报告大小的文件感兴趣,那么seek()方法将大大加快。我不知道它是如何(我的意思是seek()方法)在Windows系统上的行为。
答案 1 :(得分:1)
您可以使用fseek指定大小:
http://www.cplusplus.com/reference/cstdio/fseek/
从链接添加(已编辑)示例:
/* fseek example */
#include <stdio.h>
int main ()
{
FILE * pFile;
pFile = fopen ( "example.txt" , "wb" );
fputs ( "This is an apple." , pFile );
fseek ( pFile , 1024*1024 , SEEK_SET );
fputs ( " sam" , pFile );
fclose ( pFile );
return 0;
}