为什么使用getch()显示错误?

时间:2015-12-15 09:38:23

标签: c

struct node
{
    int data;
    struct node *next;
}   *start=NULL;

void create()
{
    char ch;
    do
    {
        struct node *new_node,*current;

        new_node = (struct node *)malloc(sizeof(struct node));

        printf("\nEnter the data : ");
        scanf("%d",&new_node->data);
        new_node->next = NULL;

        if(start == NULL)
        {
            start = new_node;
            current = new_node;
        }
        else
        {
            current->next = new_node;
            current = new_node;
        }

        printf("nDo you want to creat another : ");
        ch = getch();
    } while(ch!='n');
}

这是包含getch()

的代码部分

当我尝试在在线编译器中运行此代码时,我收到此错误: 对getch的未定义引用 collect2:错误:1d返回1退出状态

如何解决这个问题?...请帮忙

4 个答案:

答案 0 :(得分:4)

标准 C库中没有getch函数,它只存在于Windows中,因为它不是标准函数,它的真实名称是_getch(注意领先的下划线)。根据错误消息判断您的在线编译器使用GCC,并且很可能在Linux环境中,因此没有getch(或_getch)函数。

如果您想要便携式,请使用fgetc or getcgetchar(但请注意,这些功能会返回int)。

答案 1 :(得分:1)

linux中有一个getch,但是在库中

#include <ncurses/curses.h>

有关详细信息,请参阅http://linux.die.net/man/3/getch。如果在线编译器在linux下工作,并获得ncurses库,这将是有效的!

答案 2 :(得分:1)

getchar()可能会解决您的问题。

答案 3 :(得分:0)

我也有同样的问题。 但是_getche()而不是getch()已经解决了我的问题。