【发布时间】:2016-01-08 05:53:12
【问题描述】:
我正在 Windows 上编程 C。 我在尝试读取 .tar.gz 文件时遇到了这个问题。
我以前看的代码如下:
iFile = fopen("my.tar.gz", "r");
while ((oneChar = fgetc(iFile)) != EOF) {
printf("%c", oneChar);
}
我遇到的问题是,结果只有几行,而原始文件有数千行(如您所见,6310 行)。我的猜测是 .tar.gz 文件包含一些奇怪的字符(比如文件中间的 EOF?)。
我的问题是为什么 notepad++ 可以显示整个文件,而我的程序却不能。有没有办法解决这个问题?
【问题讨论】:
-
请发布一个完整的例子。特别是,您如何声明
oneChar会很有趣。应该是int。如果有的话,以十六进制打印文件并与hexdump的输出进行比较也可能更有帮助。二进制文件中的笨拙字符很可能会导致您的终端自行覆盖。最后以"rb"模式打开文件。 -
那里没问题。我确实声明了:int oneChar;
-
为什么您要打开并阅读
.tar.gz文件?它很可能是无用的。请编辑您的问题不要评论它......顺便说一句,您的问题是特定于操作系统的,所以请用您的操作系统相关标签标记它。