gpt4 book ai didi

c - scanf 读取上一行而不是获取新行

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

我有以下代码:

#include <stdio.h>
int opt;
scanf("%d",&opt);
while(opt!=0)
{
switch(opt)
{
case 1:func1();
break;
case 2:func2();
break;
case 3:return 0;
}
printf("\n");
scanf("%d",&opt);
}

我想让计算机每次都从用户那里获取不同的数字(1 或 2 或 3),并且每次计算机都会运行单独的功能。但是当我按 2 时,func2 得到 3 个整数并在屏幕上换行打印字符。计算机读取它们而不是读取下一个输入(1 或 2 或 3)。我该如何解决?

编辑:只有在特定输入后问题才会出现(我构建了一个转换碱基的程序)。

输入:

2

10

26

1z2

输出:

ERROR

输入:

2

38762

10

不需要的输出:

201222

我不确定计算机从哪里扫描它用来打印最后不需要的输出的第二个数字。

最佳答案

您的第二个 scanf 应该会阻塞,但这不是因为在第一次调用后输入缓冲区不为空!这就是为什么它总是返回以前的值并无限循环的原因。请改用 fgetssscanf 的组合。

同时检查这个:http://c-faq.com/stdio/scanfprobs.html

关于c - scanf 读取上一行而不是获取新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20095809/

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