【发布时间】:2017-10-13 22:24:10
【问题描述】:
喜欢标题,这是我的代码:
int decompress_one_file(char *infilename, char *outfilename)
{
gzFile infile = gzopen(infilename, "rb");
FILE *outfile = fopen(outfilename, "wb");
if (!infile || !outfile) return -1;
char buffer[128] = {NULL};
int num_read = 0;
num_read = gzread(infile, buffer, sizeof(buffer)); // crash here
while (num_read > 0) {
fwrite(buffer, 1, num_read, outfile);
}
gzclose(infile);
fclose(outfile);
return 0;
}
当我的控制台应用程序运行到gzread() 时,它崩溃了,我不知道这是什么类型的错误? zlib version: 1.2.11
更新压缩功能:
int compress_one_file(char *infilename, char *outfilename)
{
FILE *infile = fopen(infilename, "rb");
gzFile outfile = gzopen(outfilename, "wb");
if (!infile || !outfile) return -1;
char inbuffer[128] = {NULL};
int num_read = 0;
unsigned long total_read = 0, total_wrote = 0;
while ((num_read = fread(inbuffer, 1, sizeof(inbuffer), infile)) > 0) {
total_read += num_read;
gzwrite(outfile, inbuffer, num_read);
}
fclose(infile);
gzclose(outfile);
return 0;
}
出现的错误:
有人知道这个错误吗?
【问题讨论】:
-
你的调试器告诉你什么?有了 Visual Studio,没有理由不使用调试器。
-
而this 可以给你一个提示。仔细阅读错误信息。留言
-
你是什么意思?我在 debug-win32 模式下运行它,当跨过“那条线”时,应用程序崩溃。您需要什么信息?
-
地址
0xbaadf00d应该升旗。 -
好的,我去看看。