嗨,我试图不使用 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 解释:
所以......这就是你可以做到的。