如何判断char*个变量是否指向空字符串?

推荐答案

判断第一个字符是否为"\0".您可能还应该判断指针是否为空.

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编程书.我可以推荐一本叫做《C编程语言》的书.

与上述内容等效的最短版本为:

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

C++相关问答推荐

char为16位且Short也为16位的c环境合法吗

为指针 struct 创建宏

设计处理各种数据类型的方法和数据 struct

编译SDL 2时缺少SDL_ttf

标准的C17标准是用括号将参数包装在函数声明中吗

将 typewriter LF打印到Windows终端,而不是隐含的CR+LF

使用额外的公共参数自定义printf

特定闪存扇区的内存别名

我在这里正确地解释了C操作顺序吗?

当输入负数时,排序算法存在问题

预先分配虚拟地址空间的区域

实现简单字典时C语言中的段错误

==284==错误:AddressSaniizer:堆栈缓冲区下溢

<;unistd.h>;和<;sys/unistd.h>;之间有什么区别?

为什么未初始化的 struct 的数组从另一个数组获取值?

为什么GCC不能在 struct 初始值设定项中以sizeof作为条件的三进制中处理复合文字的编译时求值?

%g浮点表示的最大字符串长度是多少?

GDB 跳过动态加载器代码

为什么创建局部变量的指针需要过程在堆栈上分配空间?

C语言程序流程解释