2014-12-04 43 views
0

嗨,大家好我有我的服务器客户端项目的问题。我用命令./server www.google.com运行我的代理服务器,所以我有argv[1]=www.google.com。在此之后,我运行我的客户端,然后向服务器发送值GET www.google.com。现在从服务器端我使用strtok_r(buffer," ",&string1),所以我有buffer=GETstring1=www.google.com(我肯定这些valuse因为我打印它们)。问题是,当我使用字符串在C - 打印是相同的strcmp说他们不

if((strcmp(string1,argv[1]) == 0)) 
     {  
      printf(" SAME VALUES \n"); 
     } 

我没有得到这样的printf这两个变量不具有相同的值。有任何想法吗 ?

+3

检查原始数据(使用十六进制打印,调试器等)。可能还有一些前导/尾随空白或换行符。 – 2014-12-04 21:06:44

+0

最有可能的string1在结尾处有空白。考虑修剪它,或者写一个自定义比较函数,它也停在换行符处。 – hyde 2014-12-04 21:07:15

+0

以字节为单位输出string1和argv [1]的值并检查差异 – nikitahils 2014-12-04 21:07:27

回答

1

strtok_r(buffer," ",&string1),string1不是指向找到的标记的指针。您似乎在比较string1,但函数返回值是令牌指针。所以代码应该是

char * tok = strtok_r(buffer," ",&string1); 
if ((strcmp (tok,argv[1]) == 0)) 
    {  
     printf(" SAME VALUES \n"); 
    } 
+0

这是正确的。我可以建议你稍微扩展一下你的答案。也许,添加如下内容:'char * p;''char * tok;''tok = strtok_r(buffer,“”,&p);'...... – 2014-12-04 21:20:45

+0

@Brad S.谢谢,但是OP似乎已经以某种方式解决了他的问题。我在猜测,因为唯一正确发布的代码是有效的。 – 2014-12-04 21:38:54

相关问题