微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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

分配内存

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。