整数验证在C++上

Era*_*ray 0 c integer

我编写了小型C++控制台应用程序,这是源代码:

#include<stdio.h>
#include<locale.h>
#include<ctype.h>
#include<stdlib.h>

void main()
{
    setlocale(LC_ALL, "turkish");
    int a,b,c,d;

    printf("first number: ");
    scanf("%d", &a);

    printf("second number: ");
    scanf("%d", &b);

    c = a+b;

    printf("Sum: : %d\n", c);
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,我要求用户提供两个号码而不是总结它们.但我想添加一个控件来检查用户enterede的数字是整数?

我将检查用户键入的数字,如果数字不是真正的整数,我将回显错误.我每次都使用它,scanf但它不能很好地工作.

if(!isdigit(a))
{
            printf("Invalid Char !");
            exit(1);
}
Run Code Online (Sandbox Code Playgroud)

很快,在scanf操作中,如果用户键入"a",它将产生错误消息并且程序停止工作.如果用户键入数字程序将继续

Rob*_*obᵩ 7

scanf为你做验证.只需检查返回值scanf.

printf("first number: ");
if(scanf("%d", &a) != 1) {
  printf("Bad input\n");
  return 1;
}

printf("second number: ");
if(scanf("%d", &b) != 1) {
  printf("Bad input\n");
  return 1;
}
Run Code Online (Sandbox Code Playgroud)