Покажите свой код.
Вы не можете использовать строковые функции для чтения двоичных данных, конечно, они будут реагировать так, как если бы ввод был строкой.
Использовать fread()
после выделениябуфер, конечно.
Типичная попытка может быть что-то вроде:
void * load_file(const char *filename, size_t *length)
{
FILE * const f = fopen(filename, "rb");
if (f == NULL)
return NULL;
void *buf = NULL;
if (fseek(f, 0, SEEK_END) == 0)
{
const long size = ftell(f);
if (fseek(f, 0, SEEK_SET) == 0)
{
if ((buf = malloc(size)) != NULL)
{
const size_t got = fread(buf, size, 1, f);
if (got < size)
{
free(buf);
buf = NULL;
}
else if (length != NULL)
*length = size;
}
}
}
fclose(f);
return buf;
}
Выше не проверено, но должно служить достойной схемы.
Вызывающий долженfree()
буфер после окончания с ним, конечно.