创建定义大小的文件

时间:2014-01-15 11:35:53

标签: c file size

如何在C中创建具有已定义大小的文件?项目需要在Windows和Linux上工作,所以我不能使用创建文件功能...

我尝试使用随机字符创建char数组并将它们写入文件,但我需要的文件大小比我可以这样做的大。

2 个答案:

答案 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;
}