Hi all,
I need to read a binary file as a string and store it into a buffer to do some stuff, but when i run my program i got some strange characters.
Here is my program:
Code:
#include <stdio.h>
#include <stdlib.h>
int
main (int argc, char **argv)
{
FILE *in;
char head_string[5];
int j;
char buffer[512];
in = fopen(argv[1], "rb");
if(in == NULL) {
fprintf (stderr, "Can't open file.\n");
return EXIT_FAILURE;
}
while (fgets(buffer, sizeof(buffer), in) != NULL) {
for (j = 0; j < 5 ; j++)
head_string[j] = buffer[j];
printf("The length of the block is : %s\n", head_string);
}
fclose(in);
return 0;
}
When i run my program (passing a binary file as a parameter) i got a strange chars:
Code:
$ ./a.out log_dump.data
The length of the header is : )
The length of the header is : ????
The length of the header is : S%a0
The length of the header is : ?????
The length of the header is : ?????
The length of the header is : ?????
The length of the header is : ?????
The length of the header is : ?????
The length of the header is : ?????
The length of the header is : ?????
The length of the header is : ?????
The length of the header is : ?????
The length of the header is : ?????
The length of the header is : ?????
The length of the header is : ?????
The length of the header is : ?????
The length of the header is : )
The length of the header is : ????
The length of the header is : SF0i
the display of my file using an hex dump:
Code:
0500 0033 5100 f100 ffff 00ff 0000 0000
0000 0000 0000 0000 0000 0000 0001 ffff
ffff ffff ffff ffff ffff 00ff 00ff 0500
f008 ff01 f008 ff01 0002 4233 0219 0912
ff20 5343 5049 3130 2020 ffff ffff ffff
ffff 0506 2926 0007 fff0 ffff ffff ffff
0000 4900 0101 2122 0000 4900 328a ca41
0002 0033 5100 f100 ffff ffff 0000 4200
2117 0100 1400 53f2 6125 0030 3921 33f0
9371 7372 fff2 ffff 00ff 4207 2117 0100
1400 53f8 4606 6930 9477 06f0 9371 9372
Thanks for your help.