我正在使用Eclipse,並面臨一個我不知道如何解決的問題!我有一個函數,它的一個參數是一個字符串。我做了一個參數,我給它一個字符串。現在我嘗試將這兩個字符串與if
語句進行比較,並且這兩個字符串具有相同的值,但if
語句不成功!儘管我正在用調試器檢查代碼,但我要一步一步來看,並且我可以看到r_name
和check_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」...但調試器的值窗口中顯示的地址是否正確?
考慮使用更多的空白。當我看着它時,你的代碼讓我頭痛。 –
是否check_name null終止? –
做一個strlen的字符串,看看它們是否具有完全相同的長度 – Zakir