gpt4 book ai didi

c - 读取 .tar.gz 文件

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

我正在 Windows 上编写 C 语言。我在尝试读取 .tar.gz 文件时遇到了这个问题。

文件看起来像(用 Notepad++ 打开): enter image description here

我以前阅读的代码如下:

iFile = fopen("my.tar.gz", "r");
while ((oneChar = fgetc(iFile)) != EOF) {
printf("%c", oneChar);
}

下图显示了我的程序的结果: enter image description here

我遇到的问题是,结果只有几行,而原始文件有数千行(6310 行,如您所见)。我的猜测是 .tar.gz 文件包含一些奇怪的字符(比如文件中间的 EOF?)。

我的问题是为什么notepad++可以显示整个文件而我的程序不能。这个问题有解决方案吗?

最佳答案

A .tar.gz文件通常gnu-zipped压缩一些 tar archive .它当然是一个二进制文件(里面的任何'\n''\r'都不分行,'\0'可能出现在里面),所以你需要打开它

 iFile = fopen("my.tar.gz", "rb");
if (!iFile) { perror("my.tar.gz"); exit(EXIT_FAILURE); }

此外,feof(iFile)仅在 一些 <stdio.h> 之后有效输入操作so while(!feof(iFile))fopen 之后是错误的...

但这不会帮助您从存档中提取任何文件。

因此您需要先解压缩该文件,然后提取或列出其中的相关存档文件。

您可以找到用于解压缩( zlib librarygunzipzcat 命令)和存档提取( libarchive 库、libtartar 命令)的库(和命令可执行文件) ) 步骤。

如果您的操作系统提供它,您可以考虑适本地使用 popen function .

顺便说一句,使用 putchar(oneChar)printf("%c", oneChar) 更短、更简单、更快....

关于c - 读取 .tar.gz 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34670373/

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