*argument is what your writing function is given, right? Why wouldn't this work? sprintf(fp, "%s\n~", *argument);
* is a unary operator that returns the value located at the address of argument. Also, I don't know if you need the tilde in your program; I wrote that assuming that's your limiter.

