Для вашей проблемы вы можете увидеть эту демонстрационную программу, которая читает 2 байта, но фактическая информация составляет всего 12 бит. Помимо этого, используется побитовый доступ.
fwrite() — это функция стандартной библиотеки, которая принимает аргумент размера в виде байта и имеет тип int. Таким образом, невозможно точное 12-битное чтение. Если файл, который вы создаете, создайте, как показано ниже, а также прочитайте как ниже это решит вашу проблему.
Если этот файл является специальным файлом, который не был написан вами, то следуйте стандарту, предусмотренному для чтения этого файла. Я думаю, что они также пишут только так. Или вы можете предоставить точную информацию, где я могу вам помочь.
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data:12;
}NODE;
int main()
{
FILE *fp;
fp=fopen("t","w");
NODE.data=1024;
printf("%d\n",NODE.data);
fwrite(&NODE,sizeof(NODE),1,fp);
NODE.data=0;
NODE.data=2048;
printf("%d\n",(unsigned)NODE.data);
fwrite(&NODE,sizeof(NODE),1,fp);
fclose(fp);
fp=fopen("t","r");
fread(&NODE,sizeof(NODE),1,fp);
printf("%d\n",NODE.data);
fread(&NODE,sizeof(NODE),1,fp);
printf("%d\n",NODE.data);
fclose(fp);
}
person
rajesh6115
schedule
28.07.2012