从 linux 上的存储卡读取原始数据

Read raw data from memory card on linux

我想在 Linux os 上使用 c 从存储卡读取分配单元 512b, 如何使用 (fopen) 打开存储卡的(原始数据)?

on Linux [...] how can I open (raw data) of the memory card using (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 ...