如何使用 Ctrl-D 终止程序?
我正在尝试编写一个模拟计算器的简单程序。我希望程序在按下 Ctrl+D 按键时退出或关闭。我搜索了 stackoverflow 并看到了 Ctrl+C 或 Ctrl+A 的其他示例,但这些示例是 java 中的 对于C
:
(scanf("%lf", &var);
对于 java,当按下 Ctrl+Z 时会引发 SIGINT
。
signal(SIGINT,leave);
for(;;) getchar();
我想知道在 C++ 中我可以为 Ctrl+D 做什么...
谢谢大家!
I am trying to write a simple program that simulates a calculator. I would like the program to exit or turn-off when the Ctrl+D keystroke is made. I searched through stackoverflow and saw other examples of Ctrl+C or Ctrl+A but the examples are in java and C.
for C:
(scanf("%lf", &var);
for java, a SIGINT
is raised when Ctrl+Z is pressed.
signal(SIGINT,leave);
for(;;) getchar();
I am wondering what can I do for Ctrl+D in C++...
Thanks everyone!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
Ctrl+D 将导致标准输入文件描述符返回文件结尾。任何输入读取函数都会反映这一点,然后您可以在到达文件末尾时退出程序。顺便说一句,C 示例应该在 C++ 中逐字运行,尽管它可能不是最惯用的 C++。
顺便问一下,这是作业吗?如果是这样,请务必对其进行标记。
Ctrl+D will cause the stdin file descriptor to return end-of-file. Any input-reading function will reflect this, and you can then exit the program when you reach end-of-file. By the way, the C example should work verbatim in C++, though it may not be the most idiomatic C++.
Is this homework, by the way? If so, please be sure to tag it as such.
如果您在读取输入时需要使用 Ctrl-D 终止。
If you need to terminate with Ctrl-D while reading input.
您可以让生活变得更轻松,并扫描“退出”或“退出”等关键字。上次我用计算器时,键盘上没有这些字。
许多简单的计算器程序将输入读取为以换行符结尾的文本。他们解析内存中的文本,然后给出答案。
其他更复杂的计算器程序使用窗口并且是事件驱动的。有些使用像“=”这样的按钮来表示输入结束和计算开始(不适用于 RPN 计算器)。
这些技术消除了使用控制字符序列确定文本结束输入的麻烦,并且更易于移植。
You could make life easier and scan for a keyword like "quit" or "exit". Last time I used a calculator, these words were not on the keypad.
Many simple calculator programs read the input as text terminated by a newline. They parse the text in memory, then spit out an answer.
Other more sophisticated calculator programs use windows and are event driven. Some use a button like "=" to signal end of input and start of calculation (doesn't work on RPN calculators).
These techniques remove the hassle of determining End Of Text input using a control character sequence and are more portable.
在 Unix 下,终端会将 Ctrl+D (在空行上)解释为输入结束;从
stdin
进一步读取将返回EOF
,您可以观察。Under Unix, the terminal will interpret Ctrl+D (on an empty line) as the end of input; further reads from
stdin
will returnEOF
, which you can watch for.Ctrl+D 在 Unixy 平台上是 EOF。如果你得到了每个字符,你可以检查是否得到了 EOF。
Ctrl+D on Unixy platforms is EOF. If you are getting each char, you can check to see if you got EOF.