That last solution works fine for my first case of reading in a blank 1st field, but now if I have something like:

pMsg = field1|field2||field4

with a blank field in the middle somewhere, then everything is still hosing up after that first strtok.

token1 is now being assigned the empty string like I want it
token2 is getting field2
token3 is getting field4
token4 is NULL

I would think you could just do the same thing 4 times, but I believe the way strtok is working, pMsg isn't getting moved over. I'm terrible with words. If anyone understands what I'm saying, help is greatly appreciated. If not, I'll keep fighting until I get it figured out. Thanks