2017-05-19 123 views
0

我正在使用Eclipse,並面臨一個我不知道如何解決的問題!我有一個函數,它的一個參數是一個字符串。我做了一個參數,我給它一個字符串。現在我嘗試將這兩個字符串與if語句進行比較,並且這兩個字符串具有相同的值,但if語句不成功!儘管我正在用調試器檢查代碼,但我要一步一步來看,並且我可以看到r_namecheck_name都具有相同的字符串!我做了什麼:如何比較兩個字符串?

v_function(CSystem *sss, char *r_name) { 
    char *check_name = (((sss)->rarray)->name);// here check_name=str_vv 

    printf("check_name=%s\n",check_name);  //it prints check_name=str_vv 
    printf("r_name=%s\n",r_name);    //it prints r_name=str_vv 

    if(!strcmp(check_name,r_name)){   //if statement is not working !!! 
    // do something 
    } 
} 

是的,我在調試器中檢查,並沒有進入if聲明。我也試過:if(check_name==r_name)也是,但是當我進入調試器時會發生同樣的確切問題。

_是否有此事?在值窗口中(當我使用調試器時出現),這兩個參數具有以下值:對於r_name,值爲:0x40a039 "str_vv",對於check_name,值爲:0x40a02f "str_vv"。我假設這裏的數字是地址,因爲正如我所說的,printf會打印出相同的確切字符串「str_vv」...但調試器的值窗口中顯示的地址是否正確?

+0

考慮使用更多的空白。當我看着它時,你的代碼讓我頭痛。 –

+0

是否check_name null終止? –

+0

做一個strlen的字符串,看看它們是否具有完全相同的長度 – Zakir

回答

-2

嘗試改變

if(!strcmp(check_name,r_name)) 

if(strcmp(check_name,r_name) != 0) 
//if the check_name and r_name are different, do something... 

if(strcmp(check_name,r_name) == 0) 
//if the check_name and r_name are same, do something... 
+1

這裏有什麼區別? – Zakir

+0

我試過了,發生同樣的問題! – lauren

+0

第一和第三選項是相同的。 –