试图不在C中覆盖文件?

use*_*127 1 c fopen file

嗨,我试图不使用fopen(文件,"w")覆盖C中的文件;

我的问题是该文件已作为10 MB文件存在,但当我使用fopen时,文件最终变为1KB.我想写一些文件,但我希望它保持相同的大小.我怎么做到这一点?我看到了"A +"的东西附加到文件的末尾,但如果我想写一些东西到文件的开头不扩大规模呢?它只是一个空文件

或者,有没有办法在C中创建具有特定大小(例如10MB)的文件?

Ref*_*ium 6

对的,这是可能的.通过打开它r+打开它进行"读写"(同时w打开它进行新写).

关于你的另一个问题:打开一个文件,w并向文件写入1000个1024字节块,如下所示:

FILE *fp = fopen("file", "wb");
if(fp) {
    int i = 0;
    char Buf[1024];
    for(; i < 1000; ++i)
        fwrite(Buf, 1, 1024, fp);
    fclose(fp);
}
Run Code Online (Sandbox Code Playgroud)

再一次为你的fopen标志:

r - >打开文件进行读取.(文件保持不变)
w- >打开文件进行写入.(文件被删除)
a- >打开文件以进行追加.(文件保持不变,文件指针移动到结尾)

除了这三种主要类型之外,您还可以添加一些其他选项:
b - >将文件打开为二进制文件,忽略格式化字符,例如\n
t - >将文件作为文本打开,特别是在Windows下解析\n为\ r \n.