§ Загрузка файла в память
На вход подается строка с указанием, где файл находится, на выходе получается либо указатель на массив байтов, либо NULL, если файл не прочтён.
Недостатки - невозможность напрямую узнать размер строки.
1uint8_t* loadfile(const char* filename) {
2
3 int rc, n = 0;
4
5 FILE* fp = fopen(filename, "rb");
6 if (fp == NULL) return NULL;
7
8
9 fseek(fp, 0, SEEK_END);
10 int fsize = ftell(fp);
11 fseek(fp, 0, SEEK_SET);
12
13
14 uint8_t* memptr = (uint8_t*) malloc(fsize);
15
16
17 while ((rc = fread(mm + n, 1, 4096, fp))) n += rc;
18
19 return memptr;
20}