嗨,我试图不使用 fopen(file, "w"); 覆盖 C 中的文件;
我的问题是该文件已经作为 10 MB 文件存在,但是当我使用 fopen 时,文件最终变成 1KB。我想在文件中写一些东西,但我也希望它保持相同的大小。我将如何做到这一点?我看到“a+”将东西附加到文件的末尾,但是如果我想在文件的开头写一些东西而不扩大大小怎么办?这只是一个空文件
或者,有没有办法在 C 中创建具有一定大小(例如 10MB)的文件?
对的,这是可能的。通过与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);
}
再次为您提供 fopen 标志:
r-> 打开文件进行阅读。(文件保持不变)
w-> 打开文件进行写入。(文件被删除)
a-> 打开文件进行追加。(文件保持不变,文件指针移到末尾)  
除了这三种主要类型之外,您还可以添加一些其他选项:
b  -> 以二进制形式打开文件,忽略 \n 等格式字符
t  -> 以文本形式打开文件,特别是在 Windows 下将 \n 解析为 \r\n。  
打开文件,然后使用fseek将您的位置设置为文件的开头。
编辑r+:打开时使用模式。来自man fopen:
r+     Open for reading and writing.  The stream is positioned at
       the beginning of the file.
*一种在 C 中创建具有一定大小(例如 10MB)的文件的方法?
像这样:
#include <stdio.h>
int main(void){
    const char *TenMBfile = "TenMB";
    FILE *fp;
    fp=fopen(TenMBfile, "w");
    fseek(fp, 10*1024*1024-1,SEEK_SET);
    fputc(0, fp);
    fclose(fp);
    return 0;
}
嘿!我参与了一个在我的网页上添加文本或“博客”帖子的项目,我发现了一种非常酷的方法。为此,我将使用一个 HTML 文件和我的程序。文件:
<html>
<body>
<p> Hey this is the asssdsadasdsadas paragraph</p><br>
<p> Hey this is the asssdsadasdsadas paragraph</p><br>
</body>
</html>C文件:
printf("Please enter the number of bytes to write from in %s .\n", argv[0]);
    int offset;
    scanf("%d", &offset);
    fseek(fp, -offset, SEEK_END);
    strcat(argv[1], "<br>\n\n");
    fprintf(fp, "%s", argv[1]);
    fprintf(fp, "</body>\n</html>\n");
HTML解释:
C 解释:
所以......这就是你可以做到的。