bajt to minimum jakie można czytać
jeśli nie zależy ci na szybkości to sprubuj to:
! plik musi już istnieć i być odpowiedniej długości
np: dd if=/dev/zero of=PLIK bs=100 count=1
fp = fopen(fname,\\"r+\\") => read/write
int read_bit( unsigned num,FILE *fp )
{
unsigned char c;
if( fseek(fp,num>>3,SEEK_SET) != 0 ) return -1;
if( fread(&c,1,1,fp) != 1 ) return -2;
return c & 1<<(num&7);
}
int write_bit( unsigned num,FILE *fp )
{
unsigned char c;
if( fseek(fp,num>>3,SEEK_SET) != 0 ) return -1;
if( fread(&c,1,1,fp) != 1 ) return -2;
c |= 1<<(num&7);
if( fseek(fp,num>>3,SEEK_SET) != 0 ) return -3;
if( fwrite(&c,1,1,fp) != 1 ) return -4;
return 0;
}
oczywiście dużo lepszy efekt będzie gdy użyjesz tablicy zamiast
ciągłego fssek()/fread()...