The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"scanf ..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Изначальное сообщение [ Отслеживать ]

"scanf ..."  –1 +/
Сообщение от Andrei_redd email on 03-Май-16, 10:07 
Как правильно обрабатывать исключительные ситуации ?
Необходимо проверять вводимые данные, если данные от 1 - 10 то все норм, если иначе, то вывод "Введите цифру" от 1 - 10 " ....
Ответить | Правка | Cообщить модератору

Оглавление

  • scanf ..., Andrei_redd, 16:14 , 03-Май-16, (1) –1  
    • scanf ..., Аноним, 17:43 , 03-Май-16, (2)  
      • scanf ..., Andrei_redd, 19:34 , 03-Май-16, (3) –1  
        • scanf ..., Andrei_redd, 19:37 , 03-Май-16, (4) –1  
          • scanf ..., Аноним, 21:18 , 03-Май-16, (5)  
            • scanf ..., Andrei_redd, 23:50 , 03-Май-16, (6) –1  
              • scanf ..., ubob, 12:20 , 04-Май-16, (7)  

Сообщения по теме [Сортировка по времени | RSS]


1. "scanf ..."  –1 +/
Сообщение от Andrei_redd email on 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 );
   }

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "scanf ..."  +/
Сообщение от Аноним (??) on 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;
    }

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "scanf ..."  –1 +/
Сообщение от Andrei_redd email on 03-Май-16, 19:34 
Okey, I will try ....
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

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

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "scanf ..."  +/
Сообщение от Аноним (??) on 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');
    }

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "scanf ..."  –1 +/
Сообщение от Andrei_redd email on 03-Май-16, 23:50 
Okey, I will try ....

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "scanf ..."  +/
Сообщение от ubob (??) on 04-Май-16, 12:20 
посмотри в ctype.h
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "scanf ..."  +/
Сообщение от Andrei_redd email on 05-Май-16, 08:40 
> посмотри в ctype.h

Ok, понял ....


Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

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

Это ?

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру