gpt4 book ai didi

c - 为什么我收到的错误消息增加了一倍/三倍...如果我给出超过 1 个字符

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

我正在尝试编写一个从用户的标准输入读取的代码,并检查输入是否是整数。

这是我的功能:

 int Test(int *integer)
{
int input = *integer;
int check;

do
{
check = scanf("%d", &input);

if(check == 1) // return value should be 1
{
*integer= input;
break;

}
else
{
printf("Error Message")
}

}while(check!=1 && getchar() != '\n');
return 0;


}

主要:

  int digit = 0;

Test(&digit);

如果我输入例如“a”,它只会给我 1 个“错误消息”并要求我再次输入,但如果我输入“fooooo”,它会给我 5 个或更多错误消息,然后要求我再次输入。有谁知道问题出在哪里吗?

最佳答案

您只需执行以下操作即可修复您的程序:

else {
printf("Error Message");
while(getchar() != '\n');
}

您的代码失败的原因:如果输入不是数字,转换将被中断,并且缓冲区中残留有字符。下一轮将一次消耗一个角色,直到没有剩余为止。

上面的 while 循环将从缓冲区读取直到换行符,从而有效地清空缓冲区中不需要的字符。

关于c - 为什么我收到的错误消息增加了一倍/三倍...如果我给出超过 1 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47105527/

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