C++ 服务器程序 Print While Loop

C++ Server Program Print While Loop

我正在创建一个 server/client 套接字程序,并且正在制作一个打印服务器输入的方法。

这是我的代码:

void *admin_handler (void *ptr) {
    char strBuf [100000];
    const char strExit [20] = "Server: terminated.";

    while(1) {
        scanf ("%s", strBuf);
        int i;
        for (i=0; i < nClient; i++){
            if (strBuf == "Exit"){
                write (nFDList [i], strExit, strlen (strExit) + 1);
            }
            else {
                write (nFDList [i], strBuf, strlen (strBuf) + 1);
            }
        }
    };
}

但是,当我执行时,即使我输入 "Exit",它仍然会执行 else 语句。如何修改 if 语句以在输入 "Exit" 时执行?

C 中比较字符串的最佳方法是使用 strcmp()(如果对未知字符串的安全性感兴趣,则使用 strncmp())。

相等运算符==直接比较操作数,在它们"decay"为指针之后;指针不会改变,当然是不同的。 strcmp(),相比之下,检查指向的 内存的内容, 可能相等。

顺便说一句,同样的问题存在于Java: ==检查双方是否相同objects,类似于 C 等价物,而 .equals() 检查对象 contents,类似于 strcmp().

C#,相比之下,为字符串重载 == 以便它确实会查看内容,这对于运算符重载的语言来说很有意义是可能的(C 不是):几乎从来不需要测试对象的身份,而且正如我们所见,这是常见的错误来源。