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