【问题标题】:How to copy file from disk image?如何从磁盘映像复制文件?
【发布时间】:2016-02-25 00:46:09
【问题描述】:

我现在正在使用 C 语言,并且正在读取使用 FAT12 系统的磁盘映像。在命令行中,我接受要从磁盘映像复制到本地文件夹的文件名。这是我的问题,当我遍历需要为要复制到本地文件夹的特定文件获取的所有字节时,应该使用什么函数将这些字节写入本地文件?

顺便说一下,需要从磁盘复制的文件可能是PDF、.txt等

截至目前,我使用以下在本地打开(创建)文件,然后使用它下面的函数将字节写入该文件(这个函数是我认为问题所在)实际遍历的代码还有很多通过 FAT12 中的字节,但我只需要知道我在写入过程中做错了什么:

FILE *file = fopen(arg[2],"wb"); //To create the file on the local folder
fprintf(file,"%#04x ",buffer[index]); //Write a byte from the file that is being copied to the local file from the disk image

我的代码可以完美地从我正在复制的文件中获取适当的字节,但由于某种原因,.PDF 文件无法打开,.txt 文件仅显示复制的字节(无文本)。

任何建议将不胜感激!

【问题讨论】:

  • 提供MCVE。如果没有看到您如何在 buffer 中创建数据,我们就无法判断出了什么问题。
  • 或者你的意思只是将字节复制为字节?比如说,putc(buffer[index], file);
  • @MikeCAT 谢谢你!那成功了!现在 PDF 文件实际复制为 pdf,.txt 文件复制为实际 .txt 文件。那么这里有什么不同呢? putc 如何以不同的方式将字节注入文件?我这样做的方式是在文件中插入字符串吗?

标签: c file fat file-pointer diskimage


【解决方案1】:

为此向 MikeCAT 大喊大叫!因此,当您尝试将文件从磁盘映像复制到本地文件夹时,每当您将要复制的文件的特定字节插入将接收副本的文件中时,请使用:

putc(buffer[index], file);

不是这个:

fprintf(file,"%#04x ",buffer[index]);

上面会将字节作为字符串复制到文件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    相关资源
    最近更新 更多