我正在尝试扫描4个数字而不按Enter(我希望它在看到有4个数字时结束扫描)。 我正在使用这个方法:
printf("Enter 4 Numbers(with space):n"); scanf("%d %d %d %d" , &guess1 , &guess2 , &guess3 , &guess4);
但它需要数字之间的空格并在最后按Enter键。 那么如何让它接收例如:1234(num1 = 1,num2 = 2等等)并结束接收而不按Enter键。
要输入"1234"
并扫描为4位数,请使用"1
”来限制每个整数的数据输入的文本宽度 。
if (scanf("%1d%1d%1d%1d" , &guess1 , &guess2 , &guess3 , &guess4))!=4) Handle_Input_Error(); else Success();
stdin
是usualy线缓冲。 因此,在不等待Enter的情况下读取数据,解决方案是特定于平台的。
请参阅如何防止scanf()永远等待输入字符?
你不能以你想象的方式做到这一点,因为在你按回车之前你的过程没有得到任何东西。 这就是缓冲的工作原理。 如果你真的想这样做(并且你没有给出理由),你可以考虑一个特定于操作系统的控制台UI库,比如Linux的ncurses或者DOS的等价物,它可以让你捕获每个按键。 然后你必须通过收集个别数字来组合数字。 但这并不容易,并且会将整个程序转换为您可能不想要的东西。 给我们一个理由,你想要按照你描述的方式做到这一点?
它只是删除了scanf()中%d之间的空格,你可以输入1 2 3 4之类的数字,然后按回车键,数字将分别存储在guess1,guess2,guess3和guess4中。 printf(“输入4个数字(带空格): n”);
scanf("%d%d%d%d" , &guess1 , &guess2 , &guess3 , &guess4);
所以你必须学习Technic来读取用空格分隔的数字。
以上就是c/c++开发分享扫描多个数字而不扫描输入C相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/519111.html