The 50 means you're reserving room for 50 characters. If you're expected string is longer than that you may need to increase the number.
char buffer [##];
reserves ## number of characters in an array. When you pass the name of the array to your NetGetString function it's actually passing the address of the first character of the array. The function then uses that address to sequentially place the string into the array. Reserving the space ahead of time is necessary and you need to provide sufficient space to accept the largest possible string.
On the other hand
char *buffer = new char [##];
declares a pointer named buffer. A pointer is a variable that stores an address but needs to be initialized by setting it equal to the address of an existing array or by using the new key word to have the system reserve space on the heap and assigning the address returned by that call to the pointer. The pointer can then be used to pass the address to another function. You do, however, need to use the pointer to delete the reserved space before you exit the scope where the pointer is declared and avoid reassigning the pointer before deleting the reserved space.
Lilith, Night Butterfly
I'm not a programmer but I play one in the office