gpt4 book ai didi

C : String comparing

转载 作者:行者123 更新时间:2023-11-30 20:30:36 24 4
gpt4 key购买 nike

bool done;
done = false;
while (!done) {
/* read the message */
bzero(msg, 100);
printf("[client]Type something: ");
fflush(stdout);
read(0, msg, 100);
if (strcmp(msg, "/done") == 0) {
done = true;
/* sending the message to the server */
if (write(sd, msg, 100) <= 0) {
perror("[client]Error sending the message to the server.\n");
return errno;
}
} else {
/* sending the message to the server */
if (write(sd, msg, 100) <= 0) {
perror("[client]Error sending the message to the server.\n");
return errno;

/* reading the answer given by the server*/
if (read(sd, msg, 100) < 0) {
perror("[client]read() error from server.\n");
return errno;
}
/* printing the received message */
printf("[client]The received message is: %s\n", msg);
}
}

这是我遇到问题的代码。所以我想向服务器发送消息,直到我发送消息“/done”,代码有效,我连续发送消息,但即使当我输入并发送“/done”时,该过程也不会结束。

我认为“清除”消息的 bzero 函数存在问题,或者可能我不太理解它。

我也尝试编写自己的函数来检查两个字符串是否相同,但也没有效果。

那么我应该如何编写条件或“清除”消息,以便我可以连续发送消息,并在发送“/done”后执行结束?

附注该消息在代码的前面声明为 char msg[100];

最佳答案

当您从 0 读取时,您正在从 stdin 读取。如果这是您正在输入的终端(您没有说),您可能已将其设置为正常(规范)模式,因此您将读取一行,其中可能包含换行符 (\n)。所以当你输入 /done ,您在消息缓冲区中得到的字符串是 "/done\n"这与 "/done" 不匹配...

关于C : String comparing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53750593/

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