如何在不按ENTER的情况下读取C中的数据?

时间:2019-11-17 17:37:25

标签: c keyboard

我的一项任务有点问题。关于一个如下问题:

  

使用Switch语句,编写一个读取值的程序,直到按ENTER键为止。如果按下字符“换行”,“制表符”或“退格”,则输出其名称。

这是我到目前为止所做的。

int main(){
    char x;
    x=getchar();
    while(x!='\r')
    {
        switch (x)
        {
        case '\t':
            printf("Tab!");
            break;
        case '\n':
            printf("Newline!");
            break;
        case '\b':
            printf("Backspace!");
            break;
            default: break;
        }
            x = getchar();
    }
    /* switch(x){
        case '\r': break;
        case '\t': printf("Tab!");
        case '\n': printf("Newline!");
        case '\b': printf("Backspace!");
        default: x=getch();
    } */

    return 0;
}

我的问题是,每当我使用getch()scanf()读取一个字符时,按 enter 键,因此...该程序没有做很多事情。您对我如何解决此问题有任何想法吗?换行符和Enter键也不相同吗?

我正在Windows 10和VScode中使用MinGW64作为IDE。

1 个答案:

答案 0 :(得分:0)

根据要求,尚不清楚程序应在采用一个字符后做出响应。不管输入的行缓冲如何,由于输出相同,因此可能不需要其他工作。

在Linux上,您可以将终端移至“原始”模式(使用系统调用或使用stty)。 Windows没有此类实用程序。如果必须,请查看:Get key press in windows console

鉴于这是基本的Unix执行功能,我怀疑您需要实现上述功能。