如何正确检查空字符

时间:2015-10-17 22:11:50

标签: c list null

在阅读了网站上发布的同一问题的一些答案之后,我发现在编写此检查时我显然没有犯错。从来没有,我一直收到警告,所以我决定提出一个问题来解决这个问题。

这是我的代码,我稍后会解释这个问题。

typedef struct node{
    char data;
    struct node *next;
} node;

// ...

if(head->data == '\0' || head->data == NULL)
    return NULL;

假设头指向模拟char *的链表的开头。这个if语句的目的是检查头是否为NULL或者第一个字符是否为endline,我的代码中其他地方的print语句是“(空字符串)。”

在构建程序时,我收到有关我的代码的警告。它说:

  

警告:指针和整数之间的比较

我在测试字符串变为NULL的情况下遇到困难(由于我对Windows命令行缺乏经验)所以在我尝试解决这个问题之前知道如何解决这些警告会很好。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

head->data不等于NULL,它不是指针。如果您正在使用C字符串,那么检查\0字符就足够了。没有更多的东西了。

答案 1 :(得分:1)

你说&#34;假设头指向模拟<script> $('.btn').on('click', function (e) { e.stopPropagation(); }); </script> 的链表的开头。此char*语句的目的是检查头部是否为NULL或第一个字符是否为endline。&#34;

if

但是你没有检查if(head->data == '\0' || head->data == NULL) return NULL; ,就像你的目标一样,你要检查第一个列表元素的数据值两次。你检查它是否有两种冲突类型 - 它可以同时是一个char(head)和一个char指针('\0')。

您应该检查第一个节点指针是否是 list 终止符,以及第一个NULL string 终结符。

所以我会将你的测试修改为

char