【问题标题】:How could I read data in C without pressing ENTER?如何在不按 ENTER 的情况下读取 C 中的数据?
【发布时间】:2019-11-17 17:37:25
【问题描述】:

我的一项作业有一点问题。这是一个问题,如下所示:

使用 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 中使用 MinGW64 和 VScode 作为 IDE。

【问题讨论】:

  • 第一:换行不是键,是字符!在许多环境中无需按 Enter 即可阅读,但它是特定于平台的,但你没有说这是否适用于 Windows、Unix、嵌入式...getchar returns an int.
  • 对不起,它是在 Windows 上,那我该怎么办?
  • 请编辑您的问题以包括。无论如何,这行得通吗?stackoverflow.com/questions/27653016/…this?
  • 使用标准 C 和行缓冲输入,在输入 '\n' (Enter) 之前,代码什么也得不到。
  • 我使用 MinGW64 和 VScode 作为 IDE

标签: c keyboard


【解决方案1】:

从要求程序在获取一个字符后应该响应的要求中并不清楚。可能不需要额外的工作,因为无论输入的行缓冲如何,输出都是相同的。

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

鉴于这是基本的 Unix 练习,我怀疑你是否需要实现上述内容。

【讨论】:

    猜你喜欢
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2018-06-06
    • 1970-01-01
    • 2013-08-31
    相关资源
    最近更新 更多