在C中打开.tgz文件

在C中打开.tgz文件,c,buffer,tar,filereader,C,Buffer,Tar,Filereader,我正试图将一个.tgz文件复制到内存中并发送到其他地方 使用fopen,我得到一个空指针,它告诉我.tgz文件不是二进制文件,但我想知道是否可以使用C标准库和库打开、缓冲和传递.tgz文件 问:我想知道是否有可能打开、缓冲和传递 .tgz文件是否使用C标准库和库 问:您想按原样复制binary.tgz文件吗?当然,小菜一碟:) 还是要解释.tgz文件,然后复制其内容 如果是后者,我会看“zlib”: 问:使用fopen我得到一个空指针,它告诉我.tgz文件 不是二进制文件 A:那说明你没有

我正试图将一个.tgz文件复制到内存中并发送到其他地方

使用fopen,我得到一个空指针,它告诉我.tgz文件不是二进制文件,但我想知道是否可以使用C标准库和库打开、缓冲和传递.tgz文件

问:我想知道是否有可能打开、缓冲和传递 .tgz文件是否使用C标准库和库

问:您想按原样复制binary.tgz文件吗?当然,小菜一碟:)

还是要解释.tgz文件,然后复制其内容

如果是后者,我会看“zlib”:

问:使用fopen我得到一个空指针,它告诉我.tgz文件 不是二进制文件

A:那说明你没有这种事!您应该能够“fopen()”任何文件。。。只要它存在,只要您拥有正确的权限


使用“perror()”找出潜在错误。

尝试调用
perror(“fopen”)
当您确定
fopen
返回null时。如果普通fopen对任何文件都失败,则表明您做错了,fopen()应打开所有类型的文件。您可能向fopen传递了错误的文件名。常见的错误包括:1。从文本文件中读取文件名后忘记删除换行符;2.使用反斜杠作为路径分隔符,并忘记在C字符串中将其加倍;3.使用从readdir获得的文件名,而不在目录前加前缀或chdir。@AlanCurry,就是这样。我一直忘了DOS不会让你的文件名超过7或8个字符,这不是我第一次被它搞砸了。看看我对艾伦·库里的评论,我会接受这个答案,因为这是我自己的错误。现在投票表决。