gpt4 book ai didi

c - scanf(%d,..) 在一个循环中,当给定一个 char once 时不阻塞

转载 作者:太空狗 更新时间:2023-10-29 15:33:39 38 4
gpt4 key购买 nike

我写了这段代码:

 char str[10];

while(1)
{
scanf("%d",str);
}

如果给定一个 char(例如 'a'),循环将继续进行而不会停止并请求更多输入(scanf 不会突然阻塞)

这是为什么呢? :-)

最佳答案

因为a 不是十进制整数。 scanf 将尝试读取它但失败并且不会推进它的内部指针,因此它将无休止地尝试将相同的 a 读取为小数并失败。

考虑以下程序:

int d;
char c;
scanf("%d", &d);
scanf("%c", &c);

如果您输入 a,第一个 scanf 将失败,第二个会将“a”读入 c。这应该可以解释问题:)

关于c - scanf(%d,..) 在一个循环中,当给定一个 char once 时不阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6526628/

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