Tilted Forum Project Discussion Community  

Go Back   Tilted Forum Project Discussion Community > Interests > Tilted Technology


 
 
LinkBack Thread Tools
Old 07-11-2007, 11:22 AM   #1 (permalink)
paranoid
 
Silvy's Avatar
 
Location: The Netherlands
[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.
__________________
"Do not kill. Do not rape. Do not steal. These are principles which every man of every faith can embrace. "
- Murphy MacManus (Boondock Saints)
Silvy is offline  
Old 07-11-2007, 03:43 PM   #2 (permalink)
<3 TFP
 
xepherys's Avatar
 
Location: 17TLH2445607250
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.
__________________
The prospect of achieving a peace agreement with the extremist group of MILF is almost impossible...
-- Emmanuel Pinol, Governor of Cotobato


My Homepage
xepherys is offline  
Old 07-11-2007, 04:31 PM   #3 (permalink)
paranoid
 
Silvy's Avatar
 
Location: The Netherlands
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?
__________________
"Do not kill. Do not rape. Do not steal. These are principles which every man of every faith can embrace. "
- Murphy MacManus (Boondock Saints)
Silvy is offline  
Old 07-11-2007, 05:46 PM   #4 (permalink)
I am Winter Born
 
Pragma's Avatar
 
Location: Alexandria, VA
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.
__________________
Eat antimatter, Posleen-boy!
Pragma is offline  
Old 07-11-2007, 06:01 PM   #5 (permalink)
paranoid
 
Silvy's Avatar
 
Location: The Netherlands
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 ;-)
__________________
"Do not kill. Do not rape. Do not steal. These are principles which every man of every faith can embrace. "
- Murphy MacManus (Boondock Saints)
Silvy is offline  
 

Tags
binary, file, write


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT -8. The time now is 12:46 AM.

Tilted Forum Project

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, 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