k, с чего начать ...
1) "sizeof (char)", скорее всего, равен 1. Итак, у вас есть 512-байтовый массив, а не 64-байтовый массив.
2) массив "bit" не инициализирован.
3) присваивание "char x = bit [bitNum];" должно происходить внутри цикла.
4) "strlen (bit)) "не делает то, что вы думаете, что делаетОн интерпретирует «бит» как текстовую строку.Вы, вероятно, хотите использовать "sizeof (bit) / sizeof (char)".
5) "(x & 0)" всегда равно 0. Что вы пытаетесь сделать?Если вы пытаетесь проверить бит, вы хотите сделать "! (X & 1)".
6) "int data_blocks [number]": это даже компилируется?Вы не можете выделить локальный массив таким образом, если его размер неизвестен во время компиляции.
7) if (count == number) {break;}
только выводит вас из внутреннего цикла.Внешний цикл продолжается непрерывно.
8) Вы действительно хотите сбросить «count» в 0 на каждой итерации внешнего цикла?Вы хотите, чтобы код нашел 3 свободных местоположения где-нибудь в массиве или 3 свободных местоположения в одном байте?