Допустить ввод только цифр - C (СИ) (76215)

Узнай цену своей работы

Формулировка задачи:

Так и не нашел удобных функций контроля ввода. Вводится символьная строка (до 7 символов) Надо проверить что все символы цифры. конструкции с atoi не работает. Конструкция с strtol
do {
   printf("Enter str\n"); scanf("%s",str);
   j=strtol(str,&end); 
     } while(end != NULL);
вызывает assert при недопустимом вводе, т.е. тоже не годится Остается вроде единственный вариант - проверке каждого введенного символа в цикле с помощью isdigit Но это громоздко. Неужели нет удобного варианта?

Решение задачи: «Допустить ввод только цифр»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
int main(void)
{
    char eol = 0;
    char input[8] = "";
 
    while (1)
    {
        printf("> ");
 
        if(scanf("%7[0-9]%c", input, &eol) != 2 || eol != '\n') {
            printf("bad\n");
 
            scanf("%*[^\n]");
            scanf("%*c");
        }
        else {
            printf("good\n");
        }
 
        printf("[len = %d data = %s]\n", strlen(input), input);
    }
 
    return 0;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы