gpt4 book ai didi

c++ - strncmp 没有正确匹配

转载 作者:太空宇宙 更新时间:2023-11-04 06:03:44 26 4
gpt4 key购买 nike

我不知道如何在 C 中使用字符串:

这是我的服务器的一部分:中断永远不会被调用,即使我通过 telnet 提供了字符“/”。

理想情况下,这将通过将字符串 ch 一遍又一遍地添加到它来缓冲名为 get 的字符串,直到它达到某个字符,或者更好的是,一个字符串(但现在写它应该与一个字符一起工作但我很想知道如何使用字符串来做到这一点,这样我就可以设计一个使用 CR+LF 作为分隔符的协议(protocol)。

   char ch;
int index = 0;
char get[1024];
const char str[] = "/";

if ( read( client, &ch, 1 ) < 0 )
{
perror( "read" );

get[index] = ch;
index++;

int compareResult = strncmp(str, &ch, 5);

if(compareResult == 0){
index = 0;
close( client );
printf( "server responded, connection closed" );
break;
}
}

//if ( write( client, &ch, 1 ) < 0 ) { perror( "write" ); break; }

printf( "got stuff" );

为什么达不到

printf( "server responded, connection closed" );

线?

服务器的完整代码:http://pastebin.com/j5tX3TEx

最佳答案

这个:

int compareResult = strncmp(str, &ch, 5);

调用未定义的行为。您正在将 &ch(单个 char 的地址)传递给需要 string 指针的函数。因此,它最多会查看从 &ch 的地址开始的 5 个字符,这当然只是 一个 数据字符。

您的整个读取逻辑非常奇怪,它应该进行更大的读取而不是一次读取一个字符。

关于c++ - strncmp 没有正确匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14646565/

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