1. C character strings and string functions
In C, character strings are just arrays of characters, with a terminating zero byte marking the end of the string.This implies that you can not put a zero byte in the middle of a string;
you can, but the standard library functions will treat the first zero byte as the end of the string.
Example:
char s[80] = { 'a', 'b', 'c', '\0', 'd', 'e', 'f', '\0' }
or
char s[80] = "abc\0def";
strlen(s) will return 3.
There is not much you can do with strings in C without using the standard library string functions.
For example, to change the value of the string s above you can not do:
s = "xyz"; /* illegal */
because C does not copy arrays (except, of course, in an initialization
part of a declaration).
But you could do either:
s[0] = 'x'; s[1] = 'y'; s[2] = 'z'; s[3] = '\0';
or
strcpy( s, "xyz");
Note that the illegal statement above would be legal if the left-hand
side was a pointer:
char *p;
p = "xyz"; /* OK */
because, in this case, the array of characters "xyz" is not copied,
only the address of that array is assigned to p.