У меня есть несколько двоичных файлов, которые я хочу записать в выходной файл. Итак, я написал эту функцию, используя char
в качестве буфера, наивно думая, что это сработает.Как написать один двоичный файл другому в c
//Opened hOutput for writing, hInput for reading
void faddf(FILE* hOutput, FILE* hInput) {
char c;
int scan;
do{
scan = fscanf(hInput, "%c", &c);
if (scan > 0)
fprintf(hOutput, "%c", c);
} while (scan > 0 && !feof(hInput));
}
Выполнение этой функции дает мне выход из немногих читаемых char
-й в начале двоичного файла. Так что я попытался это так:
void faddf(FILE* hOutput, FILE* hInput) {
void * buffer;
int scan;
buffer = malloc(sizeof(short) * 209000000);
fread(buffer, sizeof(short), 209000000, hInput);
fwrite(buffer, sizeof(short), 209000000, hOutput);
free(buffer);
}
Этот «работает», но работает только тогда, когда файл меньше, чем мой «магическое число» Есть ли лучший способ?
Возможный дубликат [копировать содержимое двоичного файла] (http://stackoverflow.com/questions/2757832/copying-the-contents-of-a-binary-file) –
Чтение «символов» из двоичного файла является видом оксюморона. Вместо этого прочитайте * bytes * или еще лучше прочитайте * куски * байтов. И почему вы ожидаете, что бинарный файл будет доступен для чтения? –
Вы читаете «hOutput». – user3386109