URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10092
[ Назад ]

Исходное сообщение
"scanf ..."

Отправлено Andrei_redd , 03-Май-16 10:07 
Как правильно обрабатывать исключительные ситуации ?
Необходимо проверять вводимые данные, если данные от 1 - 10 то все норм, если иначе, то вывод "Введите цифру" от 1 - 10 " ....

Содержание

Сообщения в этом обсуждении
"scanf ..."
Отправлено Andrei_redd , 03-Май-16 16:14 
scanf( "%s", czC );
   while ( ( c = atoi( czC ) ) == 0 ) {
      puts("Вы должны vvesti chislo [1 - 100] libo -1 dlya dosrochnogo zaversheniya raboty.");  
      scanf( "%s", czC );
   }

Вот так правильно ?


"scanf ..."
Отправлено Аноним , 03-Май-16 17:43 
>  scanf( "%s", czC );
>    while ( ( c = atoi( czC ) )
> == 0 ) {
>       puts("Вы должны vvesti chislo [1 -
> 100] libo -1 dlya dosrochnogo zaversheniya raboty.");
>       scanf( "%s", czC );
>    }
> Вот так правильно ?

    int x = 0;
    while (x < 1 || x > 10) {
        printf("Input number from 1 to 10, or -1 to quit\n");
        scanf("%d", &x);
        if (x == -1) break;
    }


"scanf ..."
Отправлено Andrei_redd , 03-Май-16 19:34 
Okey, I will try ....

"scanf ..."
Отправлено Andrei_redd , 03-Май-16 19:37 
А вот %d смущает, что будет если пользователь по ошибке нажмет букву, или пробел там ?


"scanf ..."
Отправлено Аноним , 03-Май-16 21:18 
> А вот %d смущает, что будет если пользователь по ошибке нажмет букву,
> или пробел там ?

Всё правда - это извечная проблема с функциями типа printf() и scanf().
Тогда можно так (по мотивам http://stackoverflow.com/questions/14099473/how-to-scanf-onl...):
    int x = 0;
    while (1) {
        printf("Input number from 1 to 10, or -1 to quit\n");
        scanf("%d", &x);
        if (x >= 1 && x <= 10 || x == -1) break;
        while (getchar() != '\n');
    }


"scanf ..."
Отправлено Andrei_redd , 03-Май-16 23:50 
Okey, I will try ....


"scanf ..."
Отправлено ubob , 04-Май-16 12:20 
посмотри в ctype.h

"scanf ..."
Отправлено Andrei_redd , 05-Май-16 08:40 
> посмотри в ctype.h

Ok, понял ....



"scanf ..."
Отправлено Andrei_redd , 05-Май-16 18:57 
int isdigit(int c);//Возвращает ненулевое значение, если её аргумент является десятичной цифрой, в противном случае возвращается нуль

Это ?