Как проверить ввод пользователя? - PullRequest
1 голос
/ 11 августа 2010

В программе, написанной ниже, как я могу гарантировать, что вводится только целочисленное значение?И если вводится символ, программа должна преобразовать его в эквивалент ASCII, а затем добавить их и показать вывод в виде числа.Пожалуйста, помогите мне ......

#include<stdio.h>
int main(int argc, char **argv)
{
 int a,b,c;
 printf("enter two numbers:-");
 scanf("%d \t %d",&a,&b);
 c=a+b;
 printf("addition of numbers= %d",c);
}

Ответы [ 2 ]

2 голосов
/ 11 августа 2010

scanf возвращает количество элементов, которые он успешно прочитал, поэтому вы можете проверить, что он возвращает то же число, которое вы ожидали.Например,

if (scanf("%d \t %d", &a, &b) != 2)
{
    // handle error
}

Обратите внимание, что \t является пробельным символом, а пробел игнорируется scanf.

1 голос
/ 12 августа 2010

Просто чтобы добавить к тому, что сказал Джеймс.

Не забудьте промыть стандартный ввод

#include<stdio.h>
int main(int argc, char **argv)
{
 int a,b,c;

 printf("enter two numbers:-");
 if( scanf("%d \t %d",&a,&b)  == 2 )
 {
    c=a+b;
     printf("addition of numbers= %d",c);
 }
 else {
        printf("please enter a valid input");
        getchar(); // the getchar will clear the stdin otherwise next time you go do 
                   // a scanf it might not work. 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...