你好,我的返回值有问题,程序返回 1,即使 str、text 或两者都为 null
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);
}
最佳答案
首先,字符串“”与字符串NULL不同。 ""是一个带有单个 '\0' 字符的 char*,NULL 什么都不是。
你这里的问题是,当你传递空字符串时,两个检查都通过了,然后 for 循环永远不会执行,因为字符串没有任何字符(0 <= -1 是假的)。因此永远没有机会返回 0,因此总是调用 return 1。
关于无法返回 0,即使字符串为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31012098/