检查char *中的null终止字符

时间:2012-08-12 02:38:36

标签: c string

我只是想看看如何检查char *数组中的空终止字符但是我失败了。我可以使用for循环过程找到长度,您继续检查每个元素,但我想只使用while循环并找到空终止字符串。我似乎永远不会退出while循环。有这样的原因吗?

char* forward = "What is up";
int forward_length = 0;
while (*(forward++)!='/0') {
    forward_length++;
    printf("Character %d", forward_length);
}

4 个答案:

答案 0 :(得分:23)

您使用'/0'代替'\0'。这是不正确的:'\0'是空字符,而'/0'是多字符文字。

此外,在C中可以在你的条件中跳过零:

while (*(forward++)) {
    ...
}

是检查字符,整数,指针等为零的有效方法。

答案 1 :(得分:14)

空字符为'\0',而非'/0'

while (*(forward++) != '\0')

答案 2 :(得分:7)

要做到这一点:其他人现在解决了你的问题:)我想给你一个很好的建议:不要重新发明轮子

size_t forward_length = strlen(forward);

答案 3 :(得分:6)

你的'/0'应该是'\0' ..你的斜线反转/倾斜错误。您的while应如下所示:

while (*(forward++)!='\0') 

虽然表达式的!= '\0'部分在这里是可选的,因为循环将继续,只要它计算为非零(null被认为是零并将终止循环)。

所有“特殊”字符(例如,escape sequences表示不可打印的字符)使用反斜杠,例如标签'\t'或换行符'\n',同样用于null { {1}}因此很容易记住。