You seem to be struggling with some of the basic concepts here and getting a bit confused about what needs to be done. There is no need to keep copying data from one place to another just so you can write it out. Try something like:
char szDateTime[12];
int recordLength = 138; _strdate( szDateTime);
fwrite(szDateTime, 1, strlen(szDateTime), log);
printf("Date: %s", szDateTime);
fwrite("::", 1, 2, log);
_strtime( szTime );
fwrite(szDateTime, 1, strlen(szDateTime), log);
printf("Time: %s", szDateTime);
fwrite(":Info:", 1, 2, log);
fwrite(recordLength, sizeof(int), 1, log);
fwrite(str, 1, recordLength, log);
printf("Data: %s", str);
Note that as long as the data contains null bytes, it will not be possible to print it all to the screen. Some lines will appear truncated and some may overlap the following lines; this is a consequence of handling binary data and there is nothing you can do to avoid it.