当用户点击Enter键时,我想打印“你已经按下了Enter键”。 请帮我在C程序中写这个。
此致 基兰。
答案 0 :(得分:6)
#include<stdio.h>
int
main(int argc, char *argv[])
{
int ch;
while(1)
{
ch = fgetc(stdin);
if (ch == 10) {
fprintf(stdout, "You have pressed the enter key\n");
}
}
}
注意:您可能希望将终端设置为原始模式,这在操作系统与操作系统之间会有所不同。在这种情况下,终端可以默认设置为熟化模式,因此来自操作系统的终端驱动程序实际上可能不会给你一个字符,直到你实际按下回车键。
要将终端更改为原始模式,您可能需要检查特定操作系统所需的ioctl()(如果您指定哪一个,我可以提供帮助)
答案 1 :(得分:2)
回车键本身没有ASCII字符,它有一个扫描码。
'\n'
是UNIX的ASCII行结尾,Windows上为"\r\n"
,Mac上为'\r'
。
扫描代码是特定于硬件的编号,由应用程序转换为字符。
你在哪里抓住按键?
答案 2 :(得分:1)
这取决于您的终端输入模式,尤其是ICRNL
。请参阅termios(3)联机帮助页。
答案 3 :(得分:0)
假设您的意思是 CARRIAGE RETURN ,它是 ASCII 13 或十六进制0x0D (因此我的用户名 0A0D )。如果您的意思是 LINE FEED ,则 ASCII 10 或十六进制0x0A 。在进一步回答之前,我会让你更多地提出你的问题。
答案 4 :(得分:-1)
每当你想得到任何ascii值的“getche()”时,它都会回应一个按下的字符。 因此,您运行该程序并按Enter键并获取ascii值。
进入并逃脱其27&amp; 13 ..不记得哪个属于哪个
答案 5 :(得分:-2)
如果你不想使用幻数,你可以使用一个字符:C知道它为'\ r'