C ++服务器程序打印循环

时间:2018-04-30 05:32:21

标签: c++ while-loop boolean-logic

我正在创建一个服务器/客户端套接字程序,我正在制作一个打印服务器输入的方法。

这是我的代码:

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语句。当我输入“Exit”时,如何修改要执行的if语句?

1 个答案:

答案 0 :(得分:2)

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

等于运算符==在它们“衰减”到指针之后直接比较操作数;指针不会改变,当然也不同。相反,strcmp()检查指向的内存的内容,可能相等。

另外, Java: ==中存在同样的问题,检查双方是否是相同的对象,类似于C等价物,而{ {1}}检查对象内容,类似于.equals()

相比之下,

C#为字符串重载strcmp(),以便确实查看内容,这对于可能运算符重载的语言非常有意义(C不是):几乎不需要测试对象的身份,正如我们所见,这是一个常见的错误来源。