我目前正在为类分配,我们必须编写一个从命令行获取用户输入的程序。
程序应继续从用户那里获取输入,直到在自己的行上写入Ctrl + d字符。
例如:
%。/测试
程序将在最后一行之后停止(' - '字符只是为了向用户显示他们仍在输入文本)。
到目前为止,我有这个:
char c;
printf("- ");
while (c != EOF) {
scanf(" %c", &c);
printf("- ");
}
但是当我在执行时键入ctrl + d时它不会退出,任何帮助都会非常感激。
此外,我希望这可以在我的Mac上工作,所以如果有人可以阐明是否有不同的方法来做到这一点(因为cmd + d只是拆分终端窗口),这也将非常感激。
提前致谢!
答案 0 :(得分:0)
使用termios
- >顺便说一句,我保证已经回复了几十次,但我会再次在这里发布:https://en.wikibooks.org/wiki/Serial_Programming/termios。
请注意,提出这些问题时最好的办法是先将问题写入谷歌(bing,yahoo等)。
答案 1 :(得分:0)
以下是您问题的简单解决方案:
#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问题什么都没有,因为我没有人来测试它。
祝你好运