【问题标题】:C Programming, getch() not work in IDE Netbean?C 编程,getch() 在 IDE Netbean 中不起作用?
【发布时间】:2016-01-08 05:02:09
【问题描述】:

我的 C 实验室项目必须使用主文件 C 在 Windows 7 上的 Netbeans 中运行。 要求要求输入任何键以继续。

在 DevC 中我可以使用 getch() 来解决这个问题,但在 Netbeans 中它显示函数是标识符的错误。 我的问题是: 1.我可以使用哪个功能来做这个案例? 2. 我应该使用 got 来执行此操作吗?

【问题讨论】:

  • @Haris 但这需要用户按回车键
  • @Vu VAnh 是要求输入 any 键才能继续还是 Haris 解决方案也可以?另外,您在什么操作系统上使用 netbeans ?窗户? Linux? ...
  • @mikedu95 我正在使用 windows7。 Haris 的解决方案不起作用,因为我最近尝试过。要求是“程序应该要求用户输入任何键来重复......”
  • @VuVAnh 所以 getch 应该这样做。您已经可以尝试 _getch(新 MS 名称)而不是 getch(旧 DOS 名称),但如果仍然无法解决问题,请发布一个非常简短的完整代码,表明它不起作用,并发布完整的错误消息也是。

标签: c netbeans getch


【解决方案1】:

没有这样的标准函数getch。也许你想要getchargetc

【讨论】:

  • :UI 显示“按任意键继续。”然后等待。我必须输入任何键才能执行更多功能,但输入的键不允许在 UI 中显示。
【解决方案2】:

如果您的 c 实验室是在 linux 操作系统上,那么这段代码可能会有所帮助

#include <stdlib.h>
#include <stdio.h>

#include <termios.h>


/*
    warning:
    error handling was ommited for clarity.
    check [tcgetattr, tcsetattr ] documentation

*/


int getch(){

    int                 ret;
    struct termios      back;
    struct termios      tmp;
    int fd =            0;      //stdin

    tcgetattr(fd, &back);       // a backup
    tcgetattr(fd, &tmp);

    // code get from man page
    tmp.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP
                   | INLCR | IGNCR | ICRNL | IXON);
    tmp.c_oflag &= ~OPOST;
    tmp.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);

    tmp.c_cflag &= ~(CSIZE | PARENB);
    tmp.c_cflag |= CS8;
    // endof man page

    // apply configuration
    tcsetattr(fd, TCSANOW, &tmp);

    ret=getchar();

    // reset back the configuration
    tcsetattr(fd, TCSANOW, &back);

    return ret;
}



int main(){

   int ret;
    printf("Press a key:");
    ret=ret= getch();
    printf("%c\n",ret);
    printf("DONE\n");
}

【讨论】:

    【解决方案3】:

    如下面的链接所示,正确的函数是getchar。 如果您使用的是 GCC(带有 netbeans),那么它是 getc

    正如我所见,两者都是线程安全和阻塞的。

    MSDN getchar

    Linux getc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 2018-01-22
      • 1970-01-01
      相关资源
      最近更新 更多