【问题标题】:C - Press Enter to Continue?C - 按 Enter 继续?
【发布时间】:2016-10-30 01:49:09
【问题描述】:
void clrKyb(void)
{
    char c[30];

    scanf("%s",c);

    for(int i = 0; i < 30; i++){
        if(c[i] == '\n'){
            i = 30;
        }
    }
}

void pauses(void)
{
    printf("Press <ENTER> to continue:");
    clrKyb();
}

您好,我卡在“暂停”功能上。按 ENTER 继续不起作用?

【问题讨论】:

标签: c


【解决方案1】:

只需使用 getchar(),它会返回从标准输入读取的第一个字符并等待直到 ENTER。

#include <stdio.h>
void clrKyb(void) {
    while ((c = getchar()) != '\n' && c != EOF) {};
}
void pause(void) {
    printf("Press <ENTER> to continue.");
    clrKyb();
}

我觉得这是家庭作业。下次请提前告知我们,以便我们提供指导而非答案。

【讨论】:

  • 我也需要它来读取超过 1 个字符的内容。例如“abcd”。
  • @user3013760 但是你真的需要返回那个输入吗?因为你的例子没有这样做。此函数能够检测超过 1 个字符和一个回车,但只返回第一个。你不需要检查getchar()的返回是否为'\n',如果继续下去,你就知道回车键被按下了。
  • 它在其他函数中返回,这一切都有效。我只停留在“暂停”上。按 继续执行其余代码。
  • @user3013760 所以你不需要知道 ENTER 之前输入的内容的实际内容吗?在这种情况下,此解决方案将起作用。查看我对评论的编辑。
  • 如果用户键入abcd 后跟Return,getchar() 将只读取a。该行的重置,包括尾随的'\n',将留在标准输入中以供下一个输入操作读取。
猜你喜欢
  • 2010-11-27
  • 2010-10-28
  • 2018-03-07
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2012-06-26
  • 2013-12-08
相关资源
最近更新 更多