我正在使用从教程中获取的这段代码片段。它旨在压缩输入文件中的数据并将其放入输出文件中。但是,它在运行时会出现分段错误:
int map_Compress(char *inmapfile, char *outmapfile)
{
FILE *infile = fopen(inmapfile, "rb");
gzFile outfile = gzopen(outmapfile, "wb");
if (!infile || !outfile) return -1;
char inbuffer[1];
int num_read = 0;
unsigned long total_read = 0;
while ((num_read = fread(&inbuffer, 1, sizeof(inbuffer), infile)) > 0)
{
printf("%d\n",total_read);
total_read += num_read;
gzwrite(outfile, inbuffer, num_read);
}
fclose(infile);
gzclose(outfile);
return total_read;
}
它被这样称呼:
int main()
{
if (map_Compress("maps/main.map", "maps/main.mz") < 0)
{
printf("Compression failed, couldn't open file(s)\n");
}
return 0;
}
这个段错误是怎么回事?调用它时,我在屏幕上看到的只是:
0
1
然后程序崩溃了……这里出了什么问题?我的输入文件有一些我放在那里的垃圾内容,所以该函数不应该将数据压缩到输出文件中吗?
请帮忙,我确定这是我忽略的一个简单问题:)