如何检查char ** str是否为空? (C)

时间:2014-03-16 03:57:49

标签: c string

在我的C代码中。我有char ** str,需要检查字符串是否为空。我编写了以下代码,因为它适用于char * str,但我得到了错误:警告:从编译器中的不兼容指针类型初始化和运行编译代码时的“分段错误”。检查** str是否为空的正确方法是什么?感谢

char **str = "";

if (**str == 0)
   printf("it's an empty string\n");

2 个答案:

答案 0 :(得分:5)

编译器告诉您""不是char指针的地址,这应该存储在char **str中。您正在存储空字节的地址并在str中确定后续字符,然后尝试将其视为地址 - 这不是幸福的秘诀。

也许你在考虑:

char *data = "";
char **str = &data;

if (str == 0)       // Is str a null pointer (answer: no)
    …report that str is a null pointer…
if (*str == 0)      // Does str point at a null pointer (answer: no)
    …report that str points at a null pointer…
if (**str == '\0')  // Is the string pointed at empty (answer: yes)
    …report empty string…

答案 1 :(得分:4)

**str == 0完全可以检查str是否指向空字符串的指针。您的问题是char **str = "";是非法的,因为""不是指向指针的指针。