Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+上的整数验证+; 我编写的小型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); }_C_Integer - Fatal编程技术网

C+上的整数验证+; 我编写的小型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); }

C+上的整数验证+; 我编写的小型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); },c,integer,C,Integer,很快,在scanf操作中,如果用户键入“a”,它将生成一条错误消息,程序将停止工作。如果用户键入一个数字,程序将继续进行验证。只需检查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 i

很快,在scanf操作中,如果用户键入“a”,它将生成一条错误消息,程序将停止工作。如果用户键入一个数字,程序将继续进行验证。只需检查
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;
}

isdigit
char
作为参数

如果对
scanf
的调用成功,则保证您有一个整数

scanf
还有一个返回值,指示它读取了多少值

在这种情况下,您需要检查
scanf
的返回值是否为1


<>:

< P>此方式的C++方式为

#include <iostream>
#include <locale>

int main()
{
    std::locale::global(std::locale("nl_NL.utf8")); // tr_TR doesn't exist on my system

    std::cout << "first number: ";

    int a;
    if (!(std::cin >> a))
    {
        std::cerr << "whoops" << std::endl;
        return 255;
    }

    std::cout << "second number: ";

    int b;
    if (!(std::cin >> b))
    {
        std::cerr << "whoops" << std::endl;
        return 255;
    }

    int c = a+b;

    std::cout << "Sum: " <<  c << std::endl;

    return 0;
}
#包括
#包括
int main()
{
std::locale::global(std::locale(“nl_nl.utf8”);//tr_tr在我的系统上不存在
标准:cout>a)
{

STR::我把这个当作C来延迟,因为我没有看到任何关于它的C++,它会帮助你得到更好的答案。我从10分钟前就学习C++,哈哈!我们的教授这样写。我复制了它。@ Eray不是代码>空main <代码>,它从来没有,也永远不会。它是代码> int main < /> >,尽管<代码>返回< /代码>Atices在主< /C> >中是可选的(但这是唯一的非-Cuth.VoUT//Cuffe>函数,它们是可选的)。不幸的是,您的教授从上个世纪开始教你们C++。
对我来说似乎不太可能是区域设置的正确名称,而且您通常不需要使用
setlocale
。我不知道您所说的“我无法自定义错误”是什么意思当
scanf
失败时,您当然可以打印任何您想要的错误消息,不是吗?是的,我的意思是错误消息,很抱歉输入错误。现在您的答案很好,真的帮助了我。谢谢!但例如,我正在键入“A”对于第一个数字,它跳过要求的第二个数字,而不是直接写入,
SUM:-1717986920
这是因为第一个
scanf
尝试读取“A”并且失败,返回0。由于缓冲区中仍然有输入,下一个
scanf
立即尝试做同样的事情,失败,并返回
0
。试试Rob的答案-我想你会明白你这样做时发生了什么。你一定是在开玩笑:我第一次听到这些(`std::locale::global(),cin,cout等等)scanf、printf、setlocale都在ansic的领域中:)我不知道是什么:)我正在从事web开发(PHP)4年来,我从来没有用C,C++做过多少课程?这是错误的广告,据我们所知…C是一种很好的语言,用于某些目的和C++,而且使用它们的能力有限,但滥用它是一个坏主意。它们是不同的语言,如果你正在写新的东西。代码,你应该清楚你想用哪一个。你的教授似乎不太明白这一点。
#include <iostream>
#include <locale>

int main()
{
    std::locale::global(std::locale("nl_NL.utf8")); // tr_TR doesn't exist on my system

    std::cout << "first number: ";

    int a;
    if (!(std::cin >> a))
    {
        std::cerr << "whoops" << std::endl;
        return 255;
    }

    std::cout << "second number: ";

    int b;
    if (!(std::cin >> b))
    {
        std::cerr << "whoops" << std::endl;
        return 255;
    }

    int c = a+b;

    std::cout << "Sum: " <<  c << std::endl;

    return 0;
}