gpt4 book ai didi

c - 什么可能导致 fwrite() 函数如此缓慢

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

我正在将大量的 chat *ptr 写入文件,但我花了很长时间才完成。我不知道为什么。

for(int i = 1; i < 64048; i++){
if(ptr[i] != NULL){
fwrite(ptr[i], 1, strlen(ptr[i])-6, file);
free(ptr[i]);
}
}

有8186字节的char指针数组,想写入文件,但是时间太长了。

我有 64048 个字符串 block 需要写入文件。

什么会导致 fwrite() 变慢??

谢谢

最佳答案

OP 使用错误的方法来调整 fwrite() 的大小,以及其他小错误。

如果“array of char pointers storing 8186 bytes”表示
1 每个 char 数组有 8186 个有效字节的数据,使用大小 8186。
2 每个 char 数组都是一个以 NUL 结尾的字符串,然后需要进行测试以确保每个字符串的长度至少为 6。不确定这 6 是什么意思。注意:size_t fwrite (const void * ptr, size_t size, size_t count, FILE * stream)

我怀疑当 strlen(ptr[i]) 小于 6 时,OP 的 - 6 会导致问题。这将使负差异成为 非常大的size_t,在fwrite()中通常没有符号count

for(int i = 0; i < 64048; i++){  // start at 0
if(ptr[i] != NULL){
int result;

result = fwrite(ptr[i], 1, 8186, file);
if (result != 8186) ; handle error;

// or

size_t len = strlen(ptr[i]) + 1; /// Add 1 for the NUL byte
if (len < 6) ; handle error of whatever the OP's 6 is about.
result = fwrite(ptr[i], 1, len, file);
if (result != len) ; handle error;

free(ptr[i]);
}
}

关于c - 什么可能导致 fwrite() 函数如此缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18808153/

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