您好我试图不使用fopen(文件,“w”)覆盖C中的文件;
我的问题是该文件已作为10 MB文件存在,但当我使用fopen时,文件最终变为1KB。我想写一些文件,但我希望它保持相同的大小。我怎么做到这一点?我看到“a +”将事物附加到文件的末尾但是如果我想在不扩展大小的情况下将某些内容写入文件的开头呢?它只是一个空文件
或者,有没有办法在C中创建具有特定大小(例如10MB)的文件?
答案 0 :(得分: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);
}
再一次为你的fopen标志:
r
- &gt;打开文件进行阅读。 (文件保持不变)
w
- &gt;打开文件进行写入。 (文件被删除)
a
- &gt;打开要附加的文件。 (文件保持不变,文件指针移动到结束)
除了这三种主要类型之外,您还可以添加更多选项:
b
- &gt;将文件作为二进制文件打开,忽略格式化字符,如\ n
t
- &gt;以文本形式打开文件,特别是在Windows下将\ n解析为\ r \ n。
答案 1 :(得分:1)
打开文件,然后使用fseek
将您的位置设置为文件的开头。
修改:打开时使用r+
模式。来自man fopen
:
r+ Open for reading and writing. The stream is positioned at
the beginning of the file.
答案 2 :(得分:1)
* 一种在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;
}
答案 3 :(得分:-1)
惠!我参与了一个在我的网页上添加文字或“博客”帖子的项目,我找到了一个非常酷的方法。 为此,我将使用HTML文件和我的程序。 HTML文件:
<html>
<body>
<p> Hey this is the asssdsadasdsadas paragraph</p><br>
<p> Hey this is the asssdsadasdsadas paragraph</p><br>
</body>
</html>
C FILE:
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解释:
所以......这就是你能做到的。