gpt4 book ai didi

c - 当文件达到一定大小时,如何暂停文件写入,然后创建一个新文件

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

我在 C 程序中生成了大量数据。我想将数据写入 1gb 文件。

我怎么会这样做?

此刻,我经历了一个 while 循环(条件将一直持续到创建 5 gbs 数据)。它创建一个结构并将其写入文件:

fwrite(storedVal, sizeof(keyEncode),1,fp);
//storedVal being the struct (which contains my data)

我希望每个文件都被称为 codes1、codes2 并递增直到 while 循环结束。我确信它会包含一个 if 语句,该语句基于它正在写入的当前文件的大小。然后当它达到 1gb 时,它会从一个新文件开始。

编辑//

实际上它应该是某种 while 语句,不断写入大小,直到文件达到 1gb 并从新文件开始

此时我的文件在我的 while 循环之前打开:

fp = fopen("keys.dat", "wb");
while(condition is true) {
//create a new struct with data and
fwrite(storedVal, sizeof(keyEncode),1,fp);
}

最佳答案

大致如下 - 请注意,有一些部分需要填写。

int write_count = 0;
int file_idx = 1;
FILE *fp;
char filename[20];

sprintf( filename, "codes%d", file_idx );
file_idx++;
fp = fopen(filename, "wb");

while( foo ) {

//update data

if( write_count + sizeof(keyEncode) > ONE_GIGABYTE ) {
fclose(fp);
write_count = 0;
sprintf( filename, "codes%d", file_idx );
file_idx++;
fp = fopen(filename, "wb");
}

fwrite(storedVal, sizeof(keyEncode),1,fp);
write_count += sizeof(keyEncode);
}

fclose(fp);

更新

根据 Aaron 的回复,您可以将这样的逻辑合并到辅助函数中进行编写。请注意,您必须使某些数据成员成为全局成员,这不是线程安全的。

关于c - 当文件达到一定大小时,如何暂停文件写入,然后创建一个新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4195905/

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