【问题标题】:C function that doesn't 'wait' for any input, but detects if any?不“等待”任何输入但检测是否有任何输入的 C 函数?
【发布时间】:2012-01-04 18:32:07
【问题描述】:

是否有一个 C 函数不等待输入,但如果有,它会检测到它吗? 我在这里尝试做的是无休止地继续循环,直到按下任何键。 我是一个新手,到目前为止我学到的所有输入功能都在等待用户输入一些东西.. 我希望我很清楚,尽管如果我不是很乐意发布代码..

【问题讨论】:

  • 您使用的是什么操作系统和编译器?
  • @MikeNakis Windows 7 Ultimate x86 和带有 GNU GCC 编译器的 code::blocks

标签: c windows gcc input codeblocks


【解决方案1】:

WIndows kbhit( ) 正是这样做的非阻塞键盘字符就绪检查,并且有一个适用于 Linux 的 kbhit( ) over here

【讨论】:

  • 谢谢.. kbhit() 和 getch() 检索被按下的内容很棒.. :)
  • @Shashwat Mehta -- 对你有好处!感谢您的反馈。如果它适合你,请不要忘记接受这个答案。
  • 链接“pwilson.net/kbhit.html” --> ERR_NAME_NOT_RESOLVED 2021 年 10 月
【解决方案2】:

既然没人说清楚....

需要注意的重要一点是,C 提供的标准库确实提供您正在寻找的功能。因此,实现它需要使用第三方库和/或有关您正在使用的操作系统的特殊知识。

通常,您可以使用其中的一些第三方库。例如,如果您使用的是 Visual Studio,则可以使用 http://msdn.microsoft.com/en-us/library/58w7c94c(v=VS.100).aspx。我不确定你的设置有什么可用的。

【讨论】:

  • 谢谢.. kbhit() 和 getch() 检索被按下的内容很棒.. :)
【解决方案3】:

您应该使用selectpoll

【讨论】:

    【解决方案4】:

    如果您只需要一种停止循环并运行程序结束的方法,您可能还需要检查 signal()。

    这取决于你到底想做什么,但总的来说:

    A) 你让你的程序保持单线程,并通过非阻塞输入读取检查输入。

    B) 你生成了一个不同的线程来处理输入并将结果传回主线程。

    【讨论】:

    • 嗯,那个难以捉摸的“非阻塞输入读取”正是他所要求的。
    猜你喜欢
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2021-12-17
    相关资源
    最近更新 更多