当用户在 C 中输入 Ctrl+d 时退出程序



我目前正在为类做一个作业,我们必须编写一个从命令行获取用户输入的程序。

程序应继续接受用户的输入,直到在其自己的行上写入 Ctrl+d 字符。

例如:

%./测试

  • 这是一些文字
  • 这是一条新线
  • 按 +D

程序将在最后一行之后停止("-"字符只是为了向用户显示他们仍在输入文本(。

到目前为止,我有这个:

char c;
printf("- ");
while (c != EOF) {
    scanf(" %c", &c);
    printf("- ");
}

但是当我在执行时键入 ctrl+d 时它不会退出,任何帮助将不胜感激。

我也希望它在我的 Mac 上工作,所以如果有人可以阐明是否有不同的方法可以做到这一点(因为 cmd+d 只是拆分终端窗口(,那也将不胜感激。

提前感谢!

以下是您问题的简单解决方案:

#include<stdio.h>
main()
{
   char c;
    int flag=0;
printf("- ");
while (flag != EOF) {
    flag = scanf(" %c", &c);
    printf("- ");
}
return 0;
}

将 Scanf 用于多个按键会使其更难捕捉。您应该使用 scanf 的结果而不是 scanf 分配,它将为您提供正确的 EOF 结果。

在更棘手的情况下,您需要多个密钥但没有准备好的东西,例如 EOF。您可以尝试模拟scanf循环,以检查Ctrl键后面是d还是d后跟ctrl。因为用户执行 ctrl+d 或 d+ctrl,并且您将能够通过此循环捕获它,使其看起来与上面的此示例完全相同。我知道这只是一个非常草率的解决方案,但它确实有效。

抱歉,我对你的MAC问题一无所获,因为我没有一个可以测试它。

祝你好运

使用 termios -> 顺便说一句,我保证这已经被回答了几十次,但我会再次在这里发布:https://en.wikibooks.org/wiki/Serial_Programming/termios。

请注意,在提出这些问题时,最好的办法是先将您的问题放入谷歌(必应,雅虎等(。

相关内容

  • 没有找到相关文章

最新更新