我正在使用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