C - Unix中Enter键的Ascii值

时间:2011-07-22 12:42:43

标签: c linux

当用户点击Enter键时,我想打印“你已经按下了Enter键”。 请帮我在C程序中写这个。

此致 基兰。

6 个答案:

答案 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'