无法返回 0,即使字符串为 null

标签 c string null

你好,我的返回值有问题,程序返回 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/

相关文章:

c - 如何在不使用c中的负号程序的情况下计算任何数字的负数?

string - Swift OS X 字符串到 Int 转换错误

android - 在另一个 Intent 中传递一个字符串不起作用

c - 不满足循环条件,不知道为什么

c - 在不使用 return 语句的情况下打印函数的返回值

java - 将字符串与通配符模式匹配的递归函数

c# - 从 List<string> 中选择匹配的行

c - 指针问题和困惑

ios - 字符串通过空测试,返回 null

c - 在多个端口上绑定(bind)/监听,pthreads 是正确的方法吗?