gpt4 book ai didi

c - 尝试从用户读取输入整数,不想接受 C 中的字符

转载 作者:行者123 更新时间:2023-11-30 14:54:49 25 4
gpt4 key购买 nike

嗨,我这里有一个函数,我只想输入一个整数,我知道字符可以像整数一样处理,但在扫描时我只想获取整数

最佳答案

我认为您需要从标准输入读取数据,如果数据不是整数,则拒绝该数据。

您可以查看 scanf() 返回的值为了那个原因。这将是成功分配的数量。

int rv, c;
rv=scanf("%d", &guessNum);
if(rv!=1)
{
///Not an integer
while((c=getchar())!='\n' && c!=EOF);
}

这里,如果 scanf()guessNum 赋值,则返回 1,否则 0 将返回被退回。

但是,如果 scanf() 由于输入不正确而没有分配给 guessNum,则该数据将保留在输入缓冲区中,must be cleared在读取之后输入的数据之前。

while((c=getchar())!='\n' && c!=EOF); 会处理这个问题。

This可能是类似的。

编辑:我刚刚看到Michael's评论。您正在将 guessNum 按值传递给函数。您对此变量所做的更改不会反射(reflect)到调用此函数的相应变量。我想不出这样做的任何理由。

也许您希望所做的更改反射(reflect)回原始变量。如果是这种情况,请将变量的地址传递给函数(通过引用调用)。

然后函数声明必须更改为 void setMaxGuess(gameState* game, int *guessNum) 并且您应该使用 传递 guessNum 的地址函数调用中的&guessNum

关于c - 尝试从用户读取输入整数,不想接受 C 中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46464012/

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