2015-11-23 9 views
-1

Я сейчас работаю в 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 файлы не open, а файлы .txt отображают только скопированные байты (без текста).

Любой совет будет рад!

+0

Предоставьте [MCVE] (http://stackoverflow.com/help/mcve). Мы не можем сказать, что не так, не видя, как вы создаете данные в 'buffer'. – MikeCAT

+2

Или, может быть, вы имеете в виду просто скопировать байты в виде байтов? скажем, 'putc (buffer [index], file);' – MikeCAT

+0

@MikeCAT СПАСИБО ЧЕЛОВЕК! это сделал трюк! теперь файл PDF фактически копируется как PDF-файл, а файлы .txt копируются как фактические .txt-файлы. Так в чем разница? как putc ввел байт в файл по-разному? был способ, которым я делал это вставку строки в файл? – Vimzy

ответ

0

Большое выступление для MikeCAT для этого! Поэтому, когда вы пытаетесь скопировать файл с образа диска в локальную папку, всякий раз, когда вы вставляете конкретный байт файла, который вы копируете в файл, который будет получать копию, используйте это:

putc(buffer[index], file); 

НЕ ЭТО:

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

выше скопирует байт в файл в виде строки.

 Смежные вопросы

  • Нет связанных вопросов^_^