Написать программу, которая проверяет, является ли введенная с клавиатуры строка двоичным числом - C (СИ)
Формулировка задачи:
2. Написать программу, которая проверяет, является ли введенная с клавиатуры строка двоичным числом.
Все еще актуально
Решение задачи: «Написать программу, которая проверяет, является ли введенная с клавиатуры строка двоичным числом»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
typedef char str_t[256];
#define get_str(s) ( scanf("%255[^\n]%*c", (s)) == 1 )
int is_bin_number(const char * s) {
long n;
char * t;
errno = 0;
n = strtol(s, &t, 2);
return ( ! ( *t || errno ) );
}
int main(void) {
str_t str;
while ( printf("Bin number: ") && get_str(str) )
printf("%s\n", ( is_bin_number(str) ) ? "OK" : "FAIL");
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с консолью и обработки ошибок.
- Объявление типа переменной
str_tдля хранения строки символов. - Макросом
get_strосуществляется ввод строки с клавиатуры с помощью функцииscanf. - В функции
is_bin_numberпроисходит проверка введенной строки на соответствие двоичному числу. - Сначала инициализируется переменная
errnoи сбрасывается в ноль. - Затем, с помощью функции
strtol, происходит попытка преобразования строки в длинное число с основанием 2. - Результат проверки сохраняется в переменной
t. - В случае успешного преобразования, функция возвращает значение
1, иначе возвращает значение0. - В основной функции
mainпроисходит бесконечный цикл, в котором с помощьюprintfвыводится приглашение для ввода строки. - Если строка успешно введена с клавиатуры, вызывается функция
is_bin_numberдля проверки соответствия введенной строки двоичному числу. - Результат проверки функции
is_bin_numberвыводится на экран с помощьюprintf. - Цикл продолжается до тех пор, пока пользователь не введет пустую строку.
- В конце программы возвращается значение
0, что означает успешный конец работы программы.