gpt4 book ai didi

c - 如何检查特定数据类型的输入?

转载 作者:行者123 更新时间:2023-11-30 14:46:39 26 4
gpt4 key购买 nike

我正处于 C 编程的初级阶段,但我有一个问题阻止我进一步发展。

我正在用 C 语言编写两个数字相加的程序,并使用了以下代码:

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

printf("Enter no. 1 \n");
scanf("%d",&a);

printf("Enter no. 2 \n");
scanf("%d",&b);

{
c=a+b;
}
printf("The sum is %d\n", c);

return (0);
}

现在,当我使用一些输入运行该程序时,它运行得很好。但是当我输入一个字符串时,结果是这样的。

Output addition_int

谁能告诉我如何检查获得的输入是否是整数并将其添加为参数。可能的 if else 语句?提前致谢

最佳答案

您应该使用 scanf 的返回值。

int std::scanf( const char* format, ... );

Return value

Number of receiving arguments successfully assigned.

--- from cppreference

完整代码:

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

printf("Enter no. 1 \n");
while(scanf("%d", &a) != 1)
getchar();

printf("Enter no. 2 \n");
while(scanf("%d", &b) != 1)
getchar();

c = a + b;
printf("The sum is %d\n", c);
return 0;
}

因此,当 scanf 无法读取小数时,它将返回 0。所以我们需要使用getchar去除非十进制字符并继续接收十进制输入。

你得到的奇怪的c值是因为scanf失败,它会保持a值未分配,所以它会一些垃圾值(value)。

关于c - 如何检查特定数据类型的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52062779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com