в Linux [...] как открыть (необработанные данные) карты памяти с помощью (fopen)?
Предполагая, что операционная система распознает наличие карты, она будет представлять карту для пользовательских программ в виде файла устройства. Например, в моей системе это, как правило, /dev/sdb
, но оно может легко отличаться в вашей (и даже в моей, по разным причинам). Если у вас есть достаточные права, вы можете открыть соответствующий файл и прочитать данные из него так же, как и обычный файл. Опираясь только на стандартные функции C, можно сделать следующее:
unsigned char data[512];
FILE *card = fopen("/dev/name_of_device", "r");
// if (card == NULL) handle error ...
size_t count = fread(data, sizeof data, 1, card);
// if (count != 1) handle error ...