如何创建“x”大小的文件?

如何在c中设置文件的大小? 我打开后会这样做吗?

是的,你会在fopen之后这样做 – 你可以创建一个稀疏文件

#include  int main(void) { int X = 1024 * 1024 - 1; FILE *fp = fopen("myfile", "w"); fseek(fp, X , SEEK_SET); fputc('\0', fp); fclose(fp); } 

这应该为你创建X字节的文件,无论你需要什么,在这种情况下它是1MiB

很惊讶没有人说过这个 – 但简单的答案是ftruncate ,它可以用来增加文件的长度并减少它。 如果增加额外文件数据设置为零字节。

 FILE *fp=fopen("myfile", "w"); ftruncate(fileno(fp), 1024*1024); fclose(fp); 

请注意,如果您之前写的数据超出了要截断的长度,则首先需要将其fflush (请参阅此处: ftruncate on file with fopen )。

ftruncate info: http : //linux.die.net/man/2/ftruncate 。

普通标准C中唯一的方法是在二进制模式下打开文件后将x字节写入文件,即使这样,标准也允许实现在不告诉您的情况下向末尾附加任意数量的空字节。

另一方面,使用POSIX ,很容易。 只需调用ftruncate(fileno(f), x);

你能澄清一下你的问题吗? 你的意思是你试图创建一个特定大小的新文件,或者你有一个现有的文件,你想截断它?

截断现有文件很简单(无论如何都是Unix变体) – 使用truncate()函数。

为了创建新文件 – 我不确定你要问的是什么。 您想创建一个空的但具有特定大小的文件吗? 你为什么要这样做? 其他人描述的稀疏文件技术(fseek + fputc)创建了一个“稀疏”文件,几乎不占用磁盘空间,但(如果你读取它)会返回全0。

有很多方法可以做到这一点:

1。 仅限C / C ++

您可以将文件指针(使用fseek() )移动到所需的大小,然后编写任何内容。 这会将文件的大小设置为文件指针的位置。

但是,此方法仅允许您增加文件的大小。 它不会让你缩小它。

2。 (视窗)

您可以使用CreateFile()文件,然后设置文件指针位置并使用SetEndOfFile()来设置实际大小。

Windows中的此方法也可用于缩小文件的大小。

3。 (Linux)的

我不确定这里,但是除了fseek + fwrite之外,posix中可能还有其他fwrite