我只是想看看如何检查char *
数组中的空终止字符但是我失败了。我可以使用for
循环过程找到长度,您继续检查每个元素,但我想只使用while
循环并找到空终止字符串。我似乎永远不会退出while
循环。有这样的原因吗?
char* forward = "What is up";
int forward_length = 0;
while (*(forward++)!='/0') {
forward_length++;
printf("Character %d", forward_length);
}
答案 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}}因此很容易记住。