Adr*_*ish 13
是的,你会在fopen之后这样做 - 你可以创建一个稀疏文件
#include <stdio.h>
int main(void) {
int X = 1024 * 1024 - 1;
FILE *fp = fopen("myfile", "w");
fseek(fp, X , SEEK_SET);
fputc('\0', fp);
fclose(fp);
}
Run Code Online (Sandbox Code Playgroud)
这应该为你创建一个X字节文件,无论你需要什么,在这种情况下它是1MiB
Hug*_*otl 10
很惊讶没有人说过这个 - 但简单的答案是ftruncate,它可以用来增加文件的长度并减少它.如果增加额外文件数据设置为零字节.
FILE *fp=fopen("myfile", "w");
ftruncate(fileno(fp), 1024*1024);
fclose(fp);
Run Code Online (Sandbox Code Playgroud)
请注意,如果您之前写的数据超出了要截断的长度,则首先需要fflush它(请参见此处:ftruncate on file with fopen).
ftruncate信息:http://linux.die.net/man/2/ftruncate.
普通标准C中唯一的方法是在以二进制模式x打开文件后将字节写入文件,即使这样,标准也允许实现在不告诉您的情况下向末尾附加任意数量的空字节.
另一方面,使用POSIX,很容易.只需致电ftruncate(fileno(f), x);
| 归档时间: |
|
| 查看次数: |
15126 次 |
| 最近记录: |