wscanw();不使用 ncurses.h 返回字符串

问题描述

当我输入“/quit”时它什么都不做? 我正在使用 PDCurses 和 MinGW 我正在编译 gcc -o file.exe file.c -lpdcurses

    while (1)
    {
        wscanw(inputwin,"%s",&text);
        if (text == "/quit")
        {
            mvwprintw(txtwin,1,"quit");
            wrefresh(txtwin);
        }
        wrefresh(inputwin);
        wclear(inputwin);
        wrefresh(inputwin);
        wmove(inputwin,0);
    }

解决方法

您不能将 C 中的字符串与相等运算符进行比较,因为您要比较的是指针地址而不是指向的值。相反,您应该使用 strcmp(3)。请注意,当字符串匹配时 strcmp 返回 0。另一件值得注意的事情。假设“text”是指向字符的指针,那么你不应该传递它的地址,因为 wscanw 会读取到错误的地址。但是,如果 text 是一个字符,那么使用 wscanw 读入它也将调用未定义的行为,因为您试图将一堆字符塞入一个 1 字节的内存区域。在这种情况下,您可以将文本声明为具有适当大小的数组或使用 malloc(3) and friends

分配内存