Доступ к битам Unsigned Char, чтобы определить, состоит ли char из 1 и 0

Эй, мне нужна небольшая помощь с доступом к неподписанным символам. Мне нужно проверить, чтобы убедиться, что «канал», который является беззнаковым символом (UCHAR), имеет длину 6 цифр (у меня это есть) и что вводимый номер фактически является двоичным числом (он же 1 или 0). Я в недоумении, как получить к нему доступ. Любая помощь будет здорово!

void binEnter(void *channel){
int i;
for (i=0; i<6; i++) {
redo:
    printf("Enter binary value for Channel %d: ",i);
    scanf("%s",(UCHAR *)channel);
    if (strlen(channel)!=6) {
        printf("Error entry must be six digits!\n");
        goto redo;
    }
}
}

person AJ Keller    schedule 07.02.2012    source источник
comment
Пожалуйста, не используйте goto. Вы можете переписать то же самое, что и if (strlen(channel) == 6) break;   -  person casablanca    schedule 07.02.2012
comment
Вы действительно хотите перезаписывать ввод каждый раз в этом цикле?   -  person Carl Norum    schedule 07.02.2012
comment
да, я должен запрашивать 6 раз для ввода, я вызываю функцию 6 раз в основной функции   -  person AJ Keller    schedule 07.02.2012


Ответы (1)


Сделайте цикл для проверки каждой цифры.

char *string = channel;
for (j = 0; j < 6; j++)
{
  if ((string[j] != '0') && (string[j] != '1'))
  {
    // error
  }
}

Вы также можете просто использовать strtol(3) и проверить результат в endptr, чтобы увидеть, получили ли вы 6 -цифровое число.

person Carl Norum    schedule 07.02.2012