gpt4 book ai didi

c - 使用 scanf_s 仅取整数时如何进行错误检查?

转载 作者:行者123 更新时间:2023-11-30 14:50:12 27 4
gpt4 key购买 nike

编辑1:抱歉,我正在学习编程类(class)...我阅读了两个链接,但不完全理解它们...

我尝试添加

    if (scanf_s("%d", &input) == 0) {
fflush(stdin);
continue;
}

但这似乎没有起到任何作用。我知道 scanf 处于错误状态,因此它将拒绝运行,并且我需要清除用户错误输入的缓冲区。

所以基本上,我正在寻找一个初学者的解决方案,适合刚刚学习循环、输入/输出和基本错误检查的人。

~~~~~~~~~

我是 C 语言新手,有一个小问题。我想从控制台读取整数列表。如果用户确实输入了整数,它就可以正常工作,但是如果输入诸如“acdb”或“0.5”之类的内容,我只会让程序无限地打印“输入一个数字:”,就好像它正在运行循环,但 scanf_s 被破坏了所以它只是跳过自己。

感谢您的帮助。

int input = 1;  
while (input != 0) {
printf("enter a number: \n");
scanf_s("%d", &input);

/* rest of code omitted */

}

最佳答案

scanf_s 返回变量参数列表中已成功填充数据的变量数量。

在您的情况下,您希望该值为 1。

如果您确实遇到无效输入,那么您的工作就是清除它,否则它仍保留在输入流中。有关更多信息,请参阅 How to clear input buffer in C?

关于c - 使用 scanf_s 仅取整数时如何进行错误检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49099814/

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