6

I was just trying to see how to check for the null terminating character in the char * array but I failed. I can find the length using the for loop procedure where you keep on checking each element, but I wanted to just use the while loop and find the null terminating string. I never seem to exit the while loop. Any reason why this is so?

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

4 回答 4

24

您已使用'/0'而不是'\0'. 这是不正确的:the'\0'是一个空字符,while'/0'是一个多字符文字。

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

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

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

于 2012-08-12T02:43:03.920 回答
14

空字符是'\0',不是'/0'

while (*(forward++) != '\0')
于 2012-08-12T02:43:18.540 回答
9

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

size_t forward_length = strlen(forward);
于 2012-08-12T06:17:59.010 回答
6

'/0'应该是'\0'..你的斜线反转/倾斜错误的方式。你while应该看起来像:

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

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

所有“特殊”字符(即不可打印字符的转义序列)都使用反斜杠,例如 tab'\t'或 newline '\n',对于 null'\0'也是如此,因此很容易记住。

于 2012-08-12T02:43:34.897 回答