As suggested above, you probably want "char text[]" or "char *text". The type you declared is "(a pointer to) an array of pointers to char" rather than "a pointer to an array of char". This type is commonly used for "argv" in "main", for example, which is an array of command line arguments supplied to the program, but it would be awkward and unusual to store a single text in such manner.
Secondly, whole thing could be rewritten as:
text[length] = 'p';
text[length+1] = 'p';
text[length+2] = 'm';
for (i = length+3; i < 16; i++)
text[i] = ' ';
Assuming that enough space is guaranteed to exist. If length+2 can be greater than 15 then it's obviously not going to work.
And the last line could probably use memset instead, but memset's "count" argument is size_t which is unsigned and therefore passing a negative number (by naively writing 16-(length+3) when length is almost 16 already) would result in a lot of random memory being overwritten. A corsesponding signed type is ssize_t but I think it's only defined in POSIX (i.e. Unix, Linux, OSX, etc).