Попытка написать программу на C, которую я никогда раньше не использовал, для преобразования шестнадцатеричного числа в двоичное в виде строки и записи ее в файл. Единственная проблема заключается в том, что она добавляется в выходной файл, когда я хочудобавить.Это происходит как для fprintf (), так и для fputs ().
Это код добавления:
while(fgets(line,1024,inputFile)){
lineLen = strlen(line);
binary = hexToBin(line, lineLen);
printf("Binary: %s\n", binary);
// output file does not exist
FILE *writeFile = fopen(argv[2], "a");
if (writeFile == NULL) {
fprintf(stderr, "write file not found: %s\n", strerror(errno));
exit(1);
}
printf("appending binary to file\n");
fprintf(writeFile,"%s\n",binary);
printf("appended\n");
}
Это функция hexToBin:
char* hexToBin(char hex[], size_t len){
// convert hexadecimal to binary
char *binString = (char*)malloc(sizeof(char)*4*len);
for (int i=0;i<len;i++){
char *binNum = hexToBinHelp(hex[i]);
strcat(binString,binNum);
free(binNum);
}
return binString;
}
hexToBinHelp возвращаетшестнадцатеричный символ как символ * его двоичного представления (например, binNum = [0] [0] [0] [0]).Это действительно долго, поэтому я бы предпочел не ставить его здесь, но могу, если это поможет.
Когда входной файл:
000a
a000
Выходной файл:
1010000000000000
0000000000001010
Спасибо