C检查中的if语句“if(!string)”是什么?

时间:2017-01-27 15:49:39

标签: c string if-statement

int func(char* string, char from, char to)
{
   int result = 0;
   if(!string) return 0;
// ...
}

我不知道这个if语句是否正在检查,给定的字符串是空还是NULL。我试着检查一下但是我没有收到明确的答案。

3 个答案:

答案 0 :(得分:1)

  

您的代码检查字符串是否为NULL。如果是,则返回0。   要检查字符串是否为空,您可以执行以下任一操作:

if (strlen(string) == 0)
{
    printf("String is empty.\n");
    return -1;
}
  

或者你可以这样做:

if (*string == '\0')
{
    printf("String is empty.\n");
    return -1;
}
  

strlen()方式只应在字符串以NULL结尾时使用。

答案 1 :(得分:1)

Instance2

相当于:

if (!string)

因此它测试传递的参数if (string==0) 是否指向一个对象。该对象是否是一个字符串(一个以空字符结尾的字符序列),它无法检查。

答案 2 :(得分:0)

有点令人困惑,因为逻辑上它说“如果不是字符串”,而不是它意味着如果这不是一个字符串,它实际上意味着这个字符串不存在,即它是否为空。