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);
}
You have used '/0'
instead of '\0'
. This is incorrect: the '\0'
is a null character, while '/0'
is a multicharacter literal.
Moreover, in C it is OK to skip a zero in your condition:
while (*(forward++)) {
...
}
is a valid way to check character, integer, pointer, etc. for being zero.
To make this complete: while others now solved your problem :) I would like to give you a piece of good advice: don't reinvent the wheel.
size_t forward_length = strlen(forward);
The null character is '\0'
, not '/0'
.
while (*(forward++) != '\0')
Your '/0'
should be '\0'
.. you got the slash reversed/leaning the wrong way. Your while
should look like:
while (*(forward++)!='\0')
though the != '\0'
part of your expression is optional here since the loop will continue as long as it evaluates to non-zero (null is considered zero and will terminate the loop).
All "special" characters (i.e., escape sequences for non-printable characters) use a backward slash, such as tab '\t'
, or newline '\n'
, and the same for null '\0'
so it's easy to remember.
Source: Stackoverflow.com