C++服务器程序循环打印
C++ Server Program Print While Loop
我正在创建一个服务器/客户端套接字程序,并且正在制作一种打印服务器输入的方法。
这是我的代码:
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);
}
}
};
}
但是,当我执行时,即使我输入"退出",它仍然执行 else 语句。如何修改键入"退出"时要执行的 if 语句?
在C中比较字符串的最佳方法是使用strcmp()
(如果对未知字符串的安全性感兴趣,则使用strncmp()
)。
相等运算符==
操作数"衰减"到指针后直接比较操作数;指针不会改变,当然是不同的。 相比之下,strcmp()
检查指向的存储器的内容,这可能是相等的。
顺便说一句,Java:==
检查两端是否是相同的对象(类似于 C 等效对象),而.equals()
检查对象内容(类似于strcmp()
)。
相比之下,C#重载了字符串==
,以便它确实会查看内容,这对于可能使用运算符重载的语言(C 不是)非常有意义: 测试对象的标识几乎从来都不是必需的,正如我们所看到的,这是一个常见的错误来源。
相关文章:
- 如何循环打印顶点结构
- 在循环C++中指定字符串之后,不会打印该字符串
- 了解嵌套循环打印星号图案
- 在无向图中打印循环
- C++ 无法在字符数组中使用 for 循环打印字母模式
- C++声明双链表,使用两个 for 循环双向遍历列表并打印
- 为什么我在尝试在单向链表中打印元素时会出现这个永无止境的循环
- 如何在 for 循环中的特定时间内获取要打印的额外值
- 如何在循环中打印两个相邻的行,同时在 c++ 中将它们都保留在一行中
- :CIN 不断打印用户在每次循环后输入的内容
- 打印系列时循环出现问题
- 打印循环链表
- 为什么这个 IF 语句在循环内不打印
- 该程序没有产生输出,而是卡在一个循环中,几秒钟后消失并打印被杀死?
- 如何在循环中使用scanf,将值存储到一个变量中,然后打印出来?
- 我的 if 语句打印在我的 while 循环中的每个 if 语句上,无论它是否为假
- 为什么我在使用 for 循环和 cout 命令时没有打印出矢量
- 如何在c++中仅使用for循环打印此代码的垂直直方图
- 递归回溯打印长度为N的二进制数的所有组合,而不使用循环
- 如何编写一个c++数组打印循环,每次迭代从不同的点开始