gpt4 book ai didi

c - 在 Linux 中读取和写入 tar.gz 文件的内容

转载 作者:行者123 更新时间:2023-11-30 19:43:53 24 4
gpt4 key购买 nike

我正在尝试打开 tar.gz 文件并将该文件的内容读入缓冲区。我想创建另一个 tar.gz 文件并将缓冲区写入新创建的 tar.gz 文件。新文件与之前的文件相同吗?代码如下:

int main()
{
FILE *fp,*fp1;
int len,len1;
int length=0;
char *buf=malloc(1024);

char *buf1=malloc(1024);
fp=fopen("/home/sharwari/Downloads/criu-1.4/3049.tar.gz","rb");

while((len=fread(buf,1024,1,fp))>0)
{
printf("%s",buf);
}

fclose(fp);

fp1=fopen("/home/sharwari/imp5.tgz","wb");

if(fp1==NULL)
printf("\n\terror in creating file...");

len1=fwrite(buf,1,strlen(buf),fp1);


printf("\n\t No. of bytes written: %d",len1);

fclose(fp1);
}

最佳答案

您的想法是正确的,但您的代码存在许多问题。至少包括:

  1. while 循环将导致丢弃除最后 1024 字节之外的所有字节。因为你不断地读取1024字节并覆盖buf的内容。
  2. 不能对二进制数据使用 strlen。
  3. 您需要对 fread 进行更多错误检查,以确定是否成功读取到文件末尾或是否发生错误。阅读 fread 手册页(它将向您指出 feof 和ferror)。
  4. 释放所有分配的内存是一个很好的做法。

关于c - 在 Linux 中读取和写入 tar.gz 文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29091506/

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