如何检查char *变量是否指向空字符串?

时间:2011-11-01 17:53:49

标签: c pointers char

如何检查char*变量是否指向空字符串?

8 个答案:

答案 0 :(得分:80)

检查第一个字符是否为'\ 0'。您还应该检查指针是否为NULL。

char *c = "";
if ((c != NULL) && (c[0] == '\0')) {
   printf("c is empty\n");
}

您可以将这两项检查放在一个函数中,以方便重用。

编辑: 在if语句中可以这样读,“如果c不为零且字符数组'c'的第一个字符不是'\ 0'或零,那么......”。

&&只是结合了这两个条件。这基本上就像这样说:

if (c != NULL) { /* AND (or &&) */
    if (c[0] == '\0') {
        printf("c is empty\n");
    }
}

如果你不清楚,你可能想要一本好的C编程书。我可以推荐一本名为“The C Programming Language”的书。

与上述相同的最短版本为:

if (c && !c[0]) {
  printf("c is empty\n");
}

答案 1 :(得分:10)

我的首选方法:

if (*ptr == 0) // empty string

可能更常见:

if (strlen(ptr) == 0) // empty string

答案 2 :(得分:9)

检查指针NULL,然后使用strlen查看是否返回0
NULL检查非常重要,因为将NULL指针传递给strlen会调用未定义的行为

答案 3 :(得分:6)

空字符串只有一个空字节。所以测试if (s[0] == (char)0)

答案 4 :(得分:2)

我更喜欢使用strlen函数,因为库函数是以最佳方式实现的。

所以,我会写    if(strlen(p)== 0)//空字符串

答案 5 :(得分:1)

给它一个机会:

尝试通过函数获取字符串获取(字符串) 然后检查条件,如果(字符串[0] =='\ 0')

答案 6 :(得分:0)

if (!*ptr) { /* empty string  */}

类似地

if (*ptr)  { /* not empty */ }

答案 7 :(得分:-1)

也许是这样的:

#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[]) {

    const char* str = "";
    if (!strcmp(str, "")) {
        printf("string is empty\n");
    }

    return 0;
}