C The Null Character
The Null Character \0
Every string in C ends with a special character: \0, known as the null character.
It tells C where the string ends.
You do not see it, and you do not have to write it when you create a string with double quotes, because C adds it for you.
This is why the string "Hello" uses 6 characters of memory, not 5:
Functions that work with strings, like printf() with %s, read the characters one by one, and stop when they reach the \0 character.
Visualize a String
A string is stored as an array of characters, with the null character \0 at the end.
Choose an index below to see which character is stored at that position:
Code
The array of characters
Output
Explanation
Another Way Of Creating Strings
In the examples above, we used a string literal (text inside double quotes) to create a string variable. This is the easiest way to create a string in C:
char greetings[] = "Hello World!"; // "Hello World!" is a string literal
You should also note that you can create a string with a set of characters. This example will produce the same string as the string literal above:
Example
char greetings[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd',
'!', '\0'};
printf("%s", greetings);
Try it Yourself »
Why do we include the \0 character at the end? When you create a string from single characters, you must add the null character yourself. C only adds it for you when you use double quotes (see The Null Character above). Without it, C does not know where the string ends.
Differences
The difference between the two ways of creating strings, is that the first method is easier
to write, and you do not have to include the \0 character, as C will do it for
you.
You should
note that the size of both arrays is the same: They both have 13 characters
(space also counts as a character by the way), including the \0 character:
Example
char greetings[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd',
'!', '\0'};
char greetings2[] = "Hello World!";
printf("%zu\n",
sizeof(greetings)); // Outputs 13
printf("%zu\n",
sizeof(greetings2)); // Outputs 13
Try it Yourself »