gpt4 book ai didi

C编程循环逻辑错误

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:50 25 4
gpt4 key购买 nike

我尝试做的循环有问题。我的代码将提示用户输入值 1、2 以执行某些操作,以及 3 以退出。当我尝试为输入添加检查(如果它不是整数)时,循环将不停地循环。我想知道我的 if( !input) 在这里被错误地使用了吗?有人可以指导我吗?谢谢。

do
{
printf ("Input no\n");
scanf ("%d", &input);

if (input)
{
if ( input == 1)
{
printf ("do wat u wan if is 1\n");
}

if ( input == 2)
{
printf ("do wat u wan if is 2\n");
}
}

else if (!input)
{
printf("error\n");
}
}
while(input !=3 );

if ( input == 3)
{
printf ("exiting\n");
}

最佳答案

如果 scanf() 读取不正确,您必须清除输入缓冲区。

int res = scanf ("%d", &input);
if( res == 0 )
{
int clear = 0 ;
while( ( clear = getchar() ) != EOF && clear != '\n') ;
}

在这种情况下,如果 res 不为 1,则 scanf 没有读取整数,并且标准输入中还剩下一些字符。

在将输入传递给 scanf() 之前还要将输入设置为 0,以便您的 if 语句可以正确处理结果。

关于C编程循环逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26512314/

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