2017-05-19 118 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

第一和第三选项是相同的。 –