Problem with writing a hexadecimal string
- by quilby
Here is my code
/*
gcc -c -Wall -g main.c
gcc -g -lm -o main main.o
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void stringToHex(const char* string, char* hex) {
int i = 0;
for(i = 0; i < strlen(string)/2; i++) {
printf("s%x", string[2*i]); //for debugging
sprintf(&hex[i], "%x", string[2*i]);
printf("h%x\n", hex[i]); //for debugging
}
}
void writeHex(char* hex, int length, FILE* file, long position) {
fseek(file, position, SEEK_SET);
fwrite(hex, sizeof(char), length, file);
}
int main(int argc, char** argv) {
FILE* pic = fopen("hi.bmp", "w+b");
const char* string = "f2";
char hex[strlen(string)/2];
stringToHex(string, hex);
writeHex(hex, strlen(string)/2, pic, 0);
fclose(pic);
return 0;
}
I want it to save the hexadecimal number 0xf2 to a file (later I will have to write bigger/longer numbers though).
The program prints out -
s66h36
And when I use hexedit to view the file I see the number '36' in it.
Why is my code not working? Thanks!