如何检查char*
变量是否指向空字符串?
答案 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;
}