bstream, побитовый вывод
Добавлено: 13 май 2011, 21:40
Добрый вечер, форумчане.
такая проблемка, не могу сообразить как выводить побитово наоборот,т.е. выводит например 0110101, а надо 1010110...
буду очень признателен)
такая проблемка, не могу сообразить как выводить побитово наоборот,т.е. выводит например 0110101, а надо 1010110...
буду очень признателен)
Код: Выделить всё
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
FILE *f;
unsigned char c;
int pos;
char md;
} BSTREAM;
int getbit(BSTREAM*s)
{
if(s->pos>5)
{
int ch;
ch=getc(s->f);
if(ch==-1)
return -1;
s->c=ch;
s->pos=0;
}
int r;
r=(s->c>>s->pos)&1;
s->pos++;
return r;
}
BSTREAM * bopen(FILE *f,const char*mode)
{
BSTREAM*s;
if((s=malloc(sizeof(BSTREAM)))==NULL)
return 0;
s->pos=0;
s->md=mode[0];
s->c=0;
s->f=f;
return s;
}
int main()
{
int b=0;
int i=7;
BSTREAM *s = bopen(stdin,"r");
while(1)
{
b=getbit(s);
printf("%d",b);
if(b==-1)
break;
}
printf("%d\n",b);
}