Ваш код выполняет точную копию двоичного содержимого от memdb до output.out .Нет преобразования в читаемый текст вообще.Обратите внимание, что while(!feof(input))
не является правильным способом проверки конца файла, но в вашем конкретном случае это не представляет проблемы.
Ваша цель неясна:
- чтоВы подразумеваете под читаемый текстовый файл ?
- , какие данные содержит memdb ?
- Вы хотите преобразовать данные не ASCII в некоторыеальтернативная форма, которая более читаема человеком?
Вот альтернатива, которая производит шестнадцатеричный дамп:
/* copy binary file memdb as hex, returns the number of bytes or negative for error */
int copy_memdb(void) {
FILE *input;
FILE *output;
int c, count;
input = fopen("memdb", "rb");
if (input == NULL) {
return -1;
}
output = fopen("output.out", "w");
if (output == NULL) {
fclose(input);
return -2;
}
count = 0;
while ((c = getc(input)) != EOF) {
if (count++ % 16 == 0) {
putc('\n', output);
} else {
putc(' ', output);
}
fprintf(%02X", c);
}
if (count > 0)
putc('\n', output);
fclose(input);
fclose(output);
return count;
}