This sounds like an issue due to the different way strings are held in VB and C / C++.
In both VB and C / C++ a string can be imagined as a list of single characters held sequentially, however it is how the length of the string is determined that differs.
In VB the zeroth character is actualy a number containing the length, but in C / C++ the string end is denoted by a null.
Change your VB to explicity send a count and then a sequence of single characters (which you say you can do), then change the C to build a string from that sequence.