Yes, this is normal because str_cpy() expects a pointer to an STRING object and you gave it just an STRING.
I don't think that you want 100 player1 strings, so you can remove the [0]. (The Lite-C STRING datatype is an opaque layer over the actual CString array and you don't need one STRING object to store one character but can user one STRING object to hold an unlimited* amount of characters).
However, of you want 100 player1 and 2 strings, you need 100 pointer to 100 STRING objects instead of one pointer to a memory area that is able to hold 100 STRING objects.
This would be the way to go:
STRING **player1_str[100];
STRING **player2_str[100];
And then in your code:
str_cpy((player1_str)[0], input_str); // No need to pass an CString as second argument, str_cpy is able to handle STRINGs!
As you can see, I wrapped those () around the player1_str, this is because the Lite-C compiler can't handle those references itself but needs some kind of "hint". You have to adopt this in your init code, otherwise it won't compile.
Edit: Another way:
str_cpy(&player1_str[0], input_str); // Just pass a pointer to the memory area
*unlimited = until you run out of memory of course.