gpt4 book ai didi

检查输入是否为C中的整数类型

转载 作者:太空狗 更新时间:2023-10-29 16:22:58 25 4
gpt4 key购买 nike

问题是我不能使用 atoi 或任何其他类似的函数(我很确定我们应该依赖数学运算)。

 int num; 
scanf("%d",&num);
if(/* num is not integer */) {
printf("enter integer");
return;
}

我试过:

(num*2)/2 == num
num%1==0
if(scanf("%d",&num)!=1)

但这些都不起作用。

有什么想法吗?

最佳答案

num 将始终包含一个整数,因为它是一个 int。您的代码的真正问题是您没有检查scanf 返回值。 scanf返回成功读取的项目数,因此在这种情况下它必须返回 1 以获得有效值。如果不是,则输入了一个无效的整数值,并且 num 变量可能没有被更改(即仍然具有任意值,因为您没有初始化它)。

根据您的评论,您只想让用户输入一个整数,然后输入回车键。不幸的是,这不能简单地通过 scanf("%d\n") 实现,但这里有一个技巧:

int num;
char term;
if(scanf("%d%c", &num, &term) != 2 || term != '\n')
printf("failure\n");
else
printf("valid integer followed by enter key\n");

关于检查输入是否为C中的整数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4072190/

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