gpt4 book ai didi

c - 试图不覆盖 C 中的文件?

转载 作者:太空宇宙 更新时间:2023-11-04 00:39:00 24 4
gpt4 key购买 nike

您好,我正在尝试不使用 fopen(file, "w"); 覆盖 C 中的文件

我的问题是该文件已经作为 10 MB 的文件存在,但是当我使用 fopen 时,该文件最终变成了 1KB。我想在文件中写入一些内容,但我希望它也保持相同的大小。我将如何做到这一点?我看到“a+”将内容附加到文件末尾,但是如果我想在不扩展大小的情况下将内容写入文件开头怎么办?这只是一个空文件

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

最佳答案

是的,这是可能的。通过使用 r+ 打开它,您可以打开它进行“读写”(而 w 打开它可以进行新的写入)。

关于您的其他问题:使用 w 打开一个文件并向该文件写入 1000 个 1024 字节的 block ,如下所示:

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。

关于c - 试图不覆盖 C 中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16427664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com