问题描述
当我输入“/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
分配内存