gpt4 book ai didi

c - libbz2 的问题

转载 作者:行者123 更新时间:2023-11-30 15:19:50 25 4
gpt4 key购买 nike

我无法让 libbz2 工作。尽管输入文件包含几 GB,但在 10 000 个字符后,它会以流结尾终止。我只是不明白出了什么问题。感谢您的任何评论。

这是我的代码:

string read_bz2_file(const string& filename) {
string result;
FILE* f;
BZFILE* b;
const int BUFSIZE = 1000;
char buf[BUFSIZE];
int bzerror;

f = fopen(filename.c_str(), "r");

if (!f) {
/* handle error */
cerr << "cannot read file " << filename << endl;
return "";
}


b = BZ2_bzReadOpen(&bzerror, f, 0, 0, NULL, 0);
if (bzerror != BZ_OK) {
BZ2_bzReadClose(&bzerror, b);
cerr << "cannot read file " << filename << endl;
return "";
/* handle error */
}

bzerror = BZ_OK;
while (bzerror == BZ_OK /* arbitrary other conditions */) {
BZ2_bzRead(&bzerror, b, buf, BUFSIZE /* size of buf */);
cout << "bzerror: " << bzerror << endl;
if (bzerror == BZ_OK) {
/* do something with buf[0 .. nBuf-1] */
result.append(buf);
}
}
if (bzerror != BZ_STREAM_END) {
BZ2_bzReadClose(&bzerror, b);
cerr << "error while reading file " << filename << endl;
return "";
/* handle error */
} else {
result.append(buf);
BZ2_bzReadClose(&bzerror, b);
return result;
}
return result;
}

最佳答案

您可以尝试以二进制模式打开文件,在fopen模式中添加一个“b”:

f = fopen(filename.c_str(), "rb");

关于c - libbz2 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30427224/

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