我在Windows上编程C。 我在尝试阅读.tar.gz文件时遇到了这个问题。
我以前读过的代码如下:
iFile = fopen("my.tar.gz", "r");
while ((oneChar = fgetc(iFile)) != EOF) {
printf("%c", oneChar);
}
我遇到的问题是,结果只有几行而原始文件有几千行(6310行,如你所见)。我的猜测是.tar.gz文件包含一些奇怪的字符(比如文件中间的EOF?)。
我的问题是为什么notepad ++可以显示整个文件,而我的程序却不能。这个问题有解决方案吗?
答案 0 :(得分:3)
function generate1() {
var table = document.getElementById('my_table');
var rowCount = table.rows.length;
var f = document.form;
f.method = "post";
f.target = "";
f.action = 'purchaseAction.jsp?rowCount=' + rowCount;
// f.submit();
}
文件通常对某些gnu-zipped进行tar archive压缩。它当然是二进制文件(其中的任何.tar.gz
或'\n'
都不会划分行,而'\r'
可能会出现在里面),所以你需要打开它与
'\0'
此外, iFile = fopen("my.tar.gz", "rb");
if (!iFile) { perror("my.tar.gz"); exit(EXIT_FAILURE); }
仅在某些feof(iFile)
输入操作后有效,因此<stdio.h>
之后while(!feof(iFile))
错误...
但这无法帮助您从档案中提取任何文件。
因此,您需要首先解压缩该文件,然后提取或列出其中的相关存档文件。
您可以找到解压缩(zlib
library,fopen
或gunzip
命令)和归档提取(libarchive
库或{的库(和命令可执行文件) {1}}或zcat
命令)步骤。
如果您的操作系统提供了它,您可以考虑正确使用popen
function。
使用libtar
的BTW比tar
....
答案 1 :(得分:3)
通常文件结尾std::is_base_of< Transition< typename TransitionCl::Cost_Type >, TransitionCl >::value,
是压缩tar文件)二进制文件)。因此,我建议您使用tar.gz
(http://linux.die.net/man/3/popen)而不是popen
来使用命令打开文件。
即
fopen