gpt4 book ai didi

C++ 服务器程序 Print While Loop

转载 作者:行者123 更新时间:2023-11-30 03:23:58 25 4
gpt4 key购买 nike

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

这是我的代码:

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 语句以在输入“退出”时执行?

最佳答案

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

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

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

相比之下,

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

关于C++ 服务器程序 Print While Loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50094465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com