В настоящее время у меня есть программа, предназначенная для чтения файлов в двоичном виде, сохранения содержимого в переменную и записи его в новый файл с тем же расширением. Я протестировал программу с различными типами файлов, и только некоторые из них работают. Файлы типа .exe, медиа-файлы (.mp4, .jpg) не работают, в то время как .txt, pdf, doc работают.
Чтобы убедиться, что это ошибка в программах чтения / записи, я открыл файлы, которые не работают с Notepad ++, и скопировал весь контент в новый файл с таким же расширением. Тем не менее эти файлы не работают.
Так чего мне не хватает? Извините за плохой английский. Спасибо!
Edit:
int archive(string files[], string output, int file_len) {
FILE *read_ptr, *write_ptr;
size_t result;
long file_size;
char *buffer;
char entry_text [8] = "###=###";
for(int c = 0; c < file_len; c++) {
read_ptr = fopen(files[c].c_str(), "rb");
if(read_ptr == NULL) {
cout << files[c] << " : File not found\n";
}
else {
cout << files[c] << " : File found\n";
write_ptr = fopen(output.c_str(), "ab");
fseek(read_ptr, 0, SEEK_END);
file_size = ftell(read_ptr);
rewind(read_ptr);
buffer = (char*) malloc (sizeof(char)*file_size);
result = fread(buffer, 1, file_size, read_ptr);
fprintf(write_ptr, "%s %s %d ", entry_text, files[c].c_str(), file_size);
fwrite(buffer, 1, file_size, write_ptr);
fclose(write_ptr);
}
}
return 0;
}
Edit2: исправлено
Спасибо за помощь, ребята. Задний пробел fprintf вызывал ошибку. В начале всех записей был написан пробел.