Rocker_dead, все, кажется вкурил. Тогда сдается неправильно реализовал идею.. хотя бы тут:
Код:
if (a[i]==0 && a[i+1]==1 && a[i+2]==1 && a[i+3]==1 && a[i+4]==1 && a[i+5]==1 && a[i+6]==1 && a[i+7]==1)
ты здесь случайно не путаешь байты и биты?
я тут прикинул пару вариантов, посмотри, может чем то поможет.
1. банально посимвольное сравнение (даем проге символ, он сравнивается со всеми вытекающими.. ):
Код:
#include <stdio.h>
#include <conio.h>
int main()
{
int symbol=0;
int bit_marker = 0x7F; // 0x01111111b
printf("start: \n");
for(;;)
{
symbol = getch();
if(symbol==bit_marker)
{
printf("symbol found: %02X\n",symbol);
}
else
{
symbol=0;
printf("symbol: %02X\n",symbol);
}
}
return 0;
}
2. тут в принципе тоже самое, только эмулируется битовый последовательный поток:
Код:
#include <stdio.h>
#include <conio.h>
void main()
{
unsigned char bit,data=0,out=0;
int bit_marker = 0x7F;
printf("start: \n");
for(;;)
{
bit = getch();
if(bit==0x31 || bit ==0x30)
{
bit &= 0x01;
data <<= 1;
data &= 0xFE;
data |= bit;
if(data == bit_marker)
{
printf("\nbit_marker found!\n");
out = data;
} else out = 0;
printf("%02X ",out);
}
}
}
да, кстати, забываю спросить. А что это за вторые кавычки после переменной в аргументах?
Код:
printf("%d", a[i], " ");