gpt4 book ai didi

c - 对于 double 值,如何不接收不是 scanf 中数字的字符。

转载 作者:太空宇宙 更新时间:2023-11-04 07:08:44 24 4
gpt4 key购买 nike

我想在这段小代码中插入 double 值并获取所写的返回值,但如果我输入除数字之外的另一个字符,我希望返回值为 0。

这是我的代码:

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

int LegalInputChecker(double Move);

int main()
{
double Move;
int res;
scanf("%lf", &Move);

res = LegalInputChecker(Move);

return res;

}

int LegalInputChecker(double Move)
{

if(Move-(int)Move == 0 && (Move>0 && Move<=7))
return 1;

else if((Move<0 || Move>7) && (Move-(int)Move == 0))
return 2;

else if(Move==0)
return 3;

else
return 0;

}

出于某种原因,当我输入一个字母时,我一直得到返回值“3”,这是什么原因?

最佳答案

当您输入无效数据时,例如

scanf("%lf", &Move);

scanf 将失败并返回 0。因此,只需检查 scanf 的返回值:

if(scanf("%lf", &Move) != 1) //If scanf failed due to invalid input or EOF
res = 0;
else
res = LegalInputChecker(Move);

for some reason, when I enter a letter for example, I keep getting the returned value "3", whats the reason?

当您输入一个字符时,Move 将保持不变并保持未初始化状态(因为您一开始没有初始化它)。对该值执行操作会导致未定义的行为。

关于c - 对于 double 值,如何不接收不是 scanf 中数字的字符。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30126614/

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