即使string为null,也无法返回0

时间:2015-06-23 19:45:24

标签: c string null

嗨,我的返回值有问题,即使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);
}

2 个答案:

答案 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