【发布时间】:2018-04-30 05:32:20
【问题描述】:
我正在创建一个服务器/客户端套接字程序,并且正在制定一种打印服务器输入的方法。
这是我的代码:
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 语句?
【问题讨论】:
-
尝试 strcmp 而不是
==比较 -
除了上述建议之外,将 100,000 个字节扔到堆栈(或用于提供自动存储的任何东西)可能会使您危险地接近堆栈溢出。如果您需要这么大的输入,请考虑使用
cin和std::string。std::string自行调整大小以适应并从动态存储中分配(通常比自动存储大几个数量级)。 -
那里看不到 C++。
-
@S.M.仅仅因为你不喜欢代码并不意味着它不是 C++。
标签: c++ while-loop boolean-logic