[c] Помогите подправить программу, нужно пошаманить с порядком вывода

  • Автор темы Rydj
  • Дата начала
R

Rydj

#1
Доброго времени суток. Можете помочь немного с программой, сам код уже написан но нужно при выводе на экран поменять порядок вывода битов.


C++:
#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>7)
{
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;
BSTREAM *s = bopen(stdin,"r");
while(1)
{
b=getbit(s);
printf("%d\n",b);
if(b==-1)
break;
}

printf("%d",b);
}
 

lazybiz

Well-known member
03.11.2010
1 339
0
#4
Поставлю вопрос по другому. Что ты сам пытался сделать и что получилось?
 
R

Rydj

#5
main пытался создать цикл но максимально что получилось-это просто цифры по порядку от 7 до 0. а нужно 8 раз вызвать функцию и показать в обратном порядке
 

lazybiz

Well-known member
03.11.2010
1 339
0
#6
C++:
int getbit( BSTREAM *s )
{
int r;
if ( s->pos > 7 ) {
int ch;
ch = getc( s->f );
if ( ch == -1 ) return -1;
s->c = ch;
s->pos = 0;
}
r = (s->c >> (7 - s->pos)) & 1;
s->pos++;
return r;
}