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



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

使用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()读取字符时,我都会按输入,所以……程序不会做太多工作。你对我如何解决这个问题有什么想法吗?Newline和Enter不是同一个键吗?

我在Windows10中使用MinGW64,并使用VScode作为IDE。

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

在Linux上,您可以将终端移动到"原始"模式(使用系统调用或使用stty(。没有适用于Windows的此类实用程序。如果你必须,看看:在窗口控制台中按键

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

最新更新