gpt4 book ai didi

c - BSD C 服务器不比较缓冲区中的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 00:52:51 24 4
gpt4 key购买 nike

因此,我尝试使用 strcmp 将缓冲区与字符串进行比较。我希望服务器在客户端说"man" 时以特殊方式响应,否则只需回复 got it。我看不出我做错了什么,但即使我从客户端输入 ma​​n,我的输出始终是“got it”而不是 ma​​n边。

void dostuff (int sock)
{
int n;
char buffer[256];
bzero(buffer,256);
n = read(sock,buffer,255);
//make list match each get text and match to user
if (n < 0) error("ERROR reading from socket");
if (!strcmp ( buffer, "man" )) n = write(sock,"you are manly",18);
else{ printf("Here is the message: %s\n",buffer);
n = write(sock,"got it",18);};
//n = write(sock,"you are gay",18);

if (n < 0) error("ERROR writing to socket");
/*

if (n < 0) error("ERROR reading from socket");
printf("Here is the message: %s\n",buffer);
n = write(sock,"got it",18);
if (n < 0) error("ERROR writing to socket");*/
}

最佳答案

问题是您在客户端使用 fgets() 获取要发送到服务器的字符串。该字符串将有一个 \n 和结尾,并且不会匹配“man”。

要删除缓冲区末尾的 \n,您可以这样做:

strtok (buffer, "\n"); 它将用 NULL 替换 \n 所以你的 strcmp( ) 将起作用。

关于c - BSD C 服务器不比较缓冲区中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12501340/

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