2015-06-23 2 views
0

Привет, у меня есть проблемы с возвращаемым значением, программа возвращения 1, даже если строка, текст или оба равны нулюне могу получить возвращать 0, даже если строка нулевой

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); 
} 
+1

'for (int i = 0; i <= len-1; i ++)' такое же, как 'for (int i = 0; i pmg

ответ

2

Во-первых, строка «» является отличается от строки NULL. "" - char * с единственным символом '\ 0', а NULL - ничто.

Ваша проблема заключается в том, что при передаче пустых строк две проверки передаются, а затем цикл не выполняется, потому что строки не имеют никаких символов (0 < = -1 - false). Поэтому никогда не будет возможности возвращать 0, и, таким образом, всегда возвращается return 1.

Смежные вопросы