Разрешить ввод только цифр - C (СИ)
Формулировка задачи:
столкнулся с тем что нужно сделать защиту от случайного ввода, тоесть нужно чтобы если в место строки, допустим, 2+2*2 введут а+2*2 программа выдавала что в строке присутствует буква, пытался сравнивать if i<-100 && i>100? присутствие буквы показывает всё равно. подскажите что делать.
Решение задачи: «Разрешить ввод только цифр»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> int main(){ int anna = 0; anna = inputs("\n\t\t\tEnter a year: "); printf("%d", anna); return 0; } int inputs(char *message){ char input[256]; while (1) { printf(message); fgets(input, 256, stdin);//stdin то что вводим с клавиатуры int last = strlen(input)-1;//укорачиваем строку , чтобы не брать \n input[last] = '\0'; if ((strlen(input) > 4) || (strlen(input) < 4)){ printf("\n\t\t\tLength must be = 4. Try again"); continue; } int i, not_digit = 0; for (i=0; input[i] != '\0'; i++){ if (!isdigit(input[i])) { not_digit = 1; printf ("\n\t\t\tYou would have to enter the number. Try again: \n"); break; } } if (not_digit) continue;//повторить return atoi(input); } }
Объяснение кода листинга программы
- Объявлена переменная
anna
типаint
со значением 0. - Вызвана функция
inputs
с передачей строки\n\t\t\tEnter a year:
в качестве аргумента. - Внутри функции
inputs
объявлена строкаinput
типаchar
с размером 256 символов. - В цикле
while
происходит вывод сообщения и считывание строки с клавиатуры в переменнуюinput
. - Строка укорачивается на последнем символе новой строки
\n
для корректного сравнения длины строки. - Если длина строки больше 4 или меньше 4 символов, выводится сообщение об ошибке и цикл продолжается.
- В цикле
for
проверяется каждый символ строки на цифру с помощью функцииisdigit()
. - Если символ не является цифрой, устанавливается флаг
not_digit
и выводится сообщение об ошибке. - Если все символы строки являются цифрами, возвращается значение строки в виде числа с помощью функции
atoi()
. - В основной функции
main
выводится значение переменнойanna
. - Программа завершается возвратом значения 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д