C Program: Length of String (w/ Pointers)
There already were two simple C programs we wrote
earlier to
find the length of a given string, with and without the use of
strlen() function.
Here, we will be making use of pointers to compute their length.
Strings are made up of characters, and in our previous examples we made use of character arrays to initialize and store them. Now we will be using character pointers instead.
We declare a pointer *text of type
char and create a string literal 'HELLO'
in the memory. Look at it again in two parts:
char *text creates a character pointer and
text = "HELLO" creates a string literal in
the memory. The character pointer
*text points to the first character of the
string 'HELLO'. We declare another character pointer
*p and assign to it the address of the
first character of text .
The while loop loops till the value at
address encounters the null character \0,
which indicates the end of the string. Note that the format specifier
for pointer type is %p. While the pointer
*p gets incremented inside the
while loop, the first pointer
text remained unchanged and still points
to the address of the first character. Therefore, the difference (p -
text) yeilds the length of the given string.
#include <stdio.h>
int main() {
char *text = "HELLO";
int length;
char *p = text;
while(*p != '\0') {
printf("The address of %c is at %p\n", *p, p);
p++;
}
length = p - text;
printf("Length of the string '%s' is %d", text, length);
return 0;
}
The above program gives the following output.
The address of H is at 0x10acd0f72
The address of E is at 0x10acd0f73
The address of L is at 0x10acd0f74
The address of L is at 0x10acd0f75
The address of O is at 0x10acd0f76
Length of the string 'HELLO' is 5