• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

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

Rydj

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


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);
}
 
L

lazybiz

Поставлю вопрос по другому. Что ты сам пытался сделать и что получилось?
 
R

Rydj

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

lazybiz

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;
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!