gunzip 函数使用示例 c语言
时间: 2024-02-12 13:09:35 浏览: 141
下面是一个使用 zlib 库解压缩 gzip 格式文件的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <zlib.h>
#define CHUNKSIZE 1024
int main(int argc, char *argv[]) {
gzFile src_file;
FILE *dst_file;
char buffer[CHUNKSIZE];
int n;
if (argc != 3) {
printf("Usage: %s source_file.gz destination_file\n", argv[0]);
exit(EXIT_FAILURE);
}
src_file = gzopen(argv[1], "rb");
if (src_file == NULL) {
printf("Error: cannot open %s\n", argv[1]);
exit(EXIT_FAILURE);
}
dst_file = fopen(argv[2], "wb");
if (dst_file == NULL) {
printf("Error: cannot open %s\n", argv[2]);
exit(EXIT_FAILURE);
}
while ((n = gzread(src_file, buffer, CHUNKSIZE)) > 0) {
fwrite(buffer, 1, n, dst_file);
}
gzclose(src_file);
fclose(dst_file);
return 0;
}
```
在这个示例中,我们首先检查命令行参数的个数,如果不是 3 个,则打印用法说明并退出程序。然后使用 gzopen 函数打开源文件,以二进制模式读取 gzip 格式文件。同时,使用 fopen 函数打开目标文件,以二进制模式写入解压缩后的数据。
接着,我们使用一个 while 循环读取源文件的数据。每次读取的数据块大小默认为 1024 字节(即 CHUNKSIZE 宏定义的值)。当读取到文件末尾时,读取的数据块大小可能小于 1024 字节,这时候我们需要检查读取到的数据块大小是否大于 0,如果小于等于 0 则跳出循环。
最后,我们将读取到的数据块写入到目标文件中。完成解压缩后,关闭源文件和目标文件即可。
阅读全文