Tilted Forum Project Discussion Community

Tilted Forum Project Discussion Community (https://thetfp.com/tfp/)
-   Tilted Technology (https://thetfp.com/tfp/tilted-technology/)
-   -   [c] write binary file (https://thetfp.com/tfp/tilted-technology/120888-c-write-binary-file.html)

Silvy 07-11-2007 11:22 AM

[c] write binary file
 
Hi guys and gals,

I'm trying to write a small tool in C, and while my programming experience is decent in object Pascal, C# and PHP, my C skills are next to nowhere.

Most of the tool is working correctly, but two issues remain:
- writing a fixed binary value to file
- writing a timestamp to file.

I know how to read/write binary streams from a char* type using the function fwrite but I can't figure out how to write a single byte (say: FF) to the same file.

The timestamp is of type time_t and the following is therefore not allowed:
Code:

fwrite(timestamp, 1, sizeof(timestamp), fp)
I'm creating the tool for logging a stream, and while I got that part working, it is adding timestamps that's puzzling me. (the FF is for differentiating between timestamp and actual data).

Any help or pointers (*ouch*) is greatly appreciated.

xepherys 07-11-2007 03:43 PM

For reference:

Quote:

size_t fwrite(
const void *buffer,
size_t size,
size_t count,
FILE *stream
);
You can frontload your buffer with all of the data then call it as your first parameter in fwrite.

Silvy 07-11-2007 04:31 PM

I see where you're getting at.

So I'm looking for a way to get byte(FF)+timestamp+byte(FF) into a buffer so I can use fwrite to get that buffer into the file.

Trying to create a buffer for the FF byte should be something like this I suppose:
Code:

        CHAR byteBuffer[1];
        byteBuffer[0] = 255;
        printf("byteBuffer: %X \n", byteBuffer);

But it is not working as expected:
Output: "byteBuffer: BFFFF48F"
Expected: "byteBuffer: FF"

How do I tell C that 255 is a single byte value?

Pragma 07-11-2007 05:46 PM

That's because you're referencing it wrong.

Code:

printf("byteBuffer: %X \n", byteBuffer[0] );
Try that instead - I think what's happening instead is that you're printing a the address of the char* byteBuffer pointer.

Silvy 07-11-2007 06:01 PM

Thanks a lot! That is indeed the solution.

I've been at this for quite a while trying to get to grips with pointers and casts and streams and such, and sometimes the logical solution eludes :)

I think I've also figured out how to write a timestamp to the file, but I'm gonna toy a bit with it for now.

Thanks again for the help. If I get stuck again I'll know where to find ya ;-)


All times are GMT -8. The time now is 05:10 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Optimization by vBSEO 3.6.0 PL2
© 2002-2012 Tilted Forum Project


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73