views:

86

answers:

2

I have a vc++ method that uses fprintf to write values to a file in the hard disc. I want to change this method so that instead of writing the values to disc, I want to return a pointer to the data.

I know in advance the size I have to allocate. Is there any way to pass a memory stream or unsigned char pointer to fprintf?

thanks

+4  A: 

You can use sprintf or better yet snprintf [_snprintf/snprintf_s for VC++] (as Michael Burr pointed out and as it's noted in the Remarks section of the sprintf link).

And, since it's tagged C++, better yet use std::stringstream.

Eugen Constantin Dinca
Or preferably `snprintf()`.
Michael Burr
@Michael: added your note, thank you.
Eugen Constantin Dinca
+1  A: 

If you want the ability to seamlessly switch between the two, perhaps via a parameter passed in designating the target to write to, you might be better off doing your I/O using C++ streams rather than the old C printf calls.

T.E.D.