Did you read my response in your other thread about writing files?
http://forums.anandtech.com/showthread.php?t=2305989
with a function like fwrite you pass it an address and the number of bytes to write. If the string is all single-byte / ASCII characters then the number of bytes is the string length.
But: if it is a variable-length string, how are you going to read it back in later without the 0-terminator?
Say you have 2 strings "hello" and "goodbye". If you use a serialization function it would include the \0 so the file looks like this:
h e l l o \0 g o o d b y e \0
And code to de-serialize can read up to the \0.
If you used fwrite, the file looks like this:
h e l l o g o o d b y e
And a de-serialization function might return "hellogoodbye" the first time you try to read a string.
That's not a problem if all strings are fixed-length, then you can fread using that length and (if needed) add a \0 at [ legnth ] in your array.