嗨,我的返回值有问题,即使str,text或两者都为null,程序返回1
int prefix ( char *str , char *text ) {
int len = strlen (text);
if (str == NULL)
return 0;
else if (text == NULL )
return 0;
else {
for (int i=0 ; i<=len-1 ; i++) {
if (text[i]==str[i])
printf (" %d char equal \n",i);
else return 0;
}
return 1 ;
}
}
int main () {
int result = prefix ("","");
printf ("%d\n",result);
}
答案 0 :(得分:2)
首先,字符串&#34;&#34;与字符串NULL不同。 &#34;&#34;是一个char *,单个&#39; \ 0&#39;字符,而NULL则没有。
你的问题在于,当你传递空字符串时,会传递两个检查,然后for循环永远不会执行,因为字符串不具有任何字符(0 <= -1为假)。因此,永远不会有机会返回0,因此总是调用返回1。
答案 1 :(得分:1)
""
不是NULL
它是空字符串。另外,您必须在NULL
strlen
does not check for NULL
之前检查strlen
。