如何解决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 举报,一经查实,本站将立刻删除。