gpt4 book ai didi

c - scanf() 函数遇到问题

转载 作者:行者123 更新时间:2023-11-30 16:02:24 26 4
gpt4 key购买 nike

我对 C 相当陌生,但在编写接受用户输入的程序时遇到了一些麻烦。这是我遇到问题的代码:

int xPos, yPos;    
while(1)
{
printf("Enter two integers: ");
if(scanf("%d %d", &xPos, &yPos) == 2)
{
printf("success \n");
}
else
{
printf("fail");
}

}

我想要的示例如下:

Enter two integers: 4 4
success
Enter two integers: 13
fail
enter two integers: sda asd
fail

而且它会继续下去

但是我得到的是:

Enter two integers: 4 4
success
Enter two integers: 13
5 (it goes onto a new line for me and I have to enter something else to make it keep going)
fail
Enter two integers: sda asd
Enter two integers:Enter two integers:Enter two integers:Enter two integers:Enter two integers:Enter two integers:Enter two integers:Enter two integers:Enter two integers:Enter two integers:Enter two integers: and on and on.. you get the idea.

关于我做错了什么有任何提示吗?我希望它在按下回车按钮后立即进行扫描。

最佳答案

这是因为 scanf 只会等待您输入两个整数(除非出现错误或文件结尾)。在这种情况下,它不关心换行符的存在,它将丢弃它们并等待另一个整数。

如果您想处理,您应该使用fgets来获取一行,然后使用sscanf来提取整数。

参见this answer一种从标准输入获取行的安全方法。除此之外,只需稍作修改即可将 scanf (...) 转换为 sscanf (buffer, ...)

关于c - scanf() 函数遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5360704/

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