http://www.cs.cf.ac.uk/Dave/C/node13.html
Si può anche fare con un mix di strutture e union "particolari":
codice:
struct byteBF
{
    unsigned bit0:1;
    unsigned bit1:1;
    unsigned bit2:1;
    unsigned bit3:1;
    unsigned bit4:1;
    unsigned bit5:1;
    unsigned bit6:1;
    unsigned bit7:1;
}
union byte_u
{
    struct byteBF bBF;
    unsigned char byte;
}
/*...*/
union byte_u bu;
bu.byte=0;
bu.bBF.bit0=1;
bu.bBF.bit1=1;
bu.bBF.bit2=0;
/*...*/
fputc(bu.byte,stream);