gpt4 book ai didi

c - 为什么每次迭代都会打印两次消息?

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

            char yes_no = 'z';
int i = 0;
while ( ( yes_no != 'y' ) && ( yes_no != 'n') )
{
read( 0, &yes_no, 1 );
printf("%dA file already exists at your write location. Over write? (y/n)\n", i++);
}

输出看起来像这样:

0A file already exists at your write location. Overwrite? (y/n)
1A file already exists at your write location. Overwrite? (y/n)
a
2A file already exists at your write location. Overwrite? (y/n)
3A file already exists at your write location. Overwrite? (y/n)

...等等

为什么要循环两次而不是每次都等待用户输入?

最佳答案

当您输入一个字母并按回车键时,它会将 'a\n' 放入流中。通过读取其中的 1 个字节,您仍然在流中留下 '\n',因此下次您调用 read() 时,它会读取 '\n' 而不是阻塞和等待用户输入。您需要丢弃留在流中的 '\n'

关于c - 为什么每次迭代都会打印两次消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8965745/

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