2014-12-04 53 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

相關問題