Может кто-то, пожалуйста, помогите мне исправить свой код. У меня есть текстовый файл с шестнадцатеричными значениями. Теперь мне нужно преобразовать шестнадцатеричное значение в двоичное и распечатать его. Это мой код до сих пор:Как преобразовать шестнадцатеричное значение в двоичное значение в C
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000
int hex_to_binary(char *argv[])
int main(int argc,char *argv[])
{
FILE *file;
file = fopen(argv[1],"r");
char line[100];
while(!feof(file)){
fgets(line,100,file);
hex_to_binary(line);
}
fclose(file);
return 0;
}
int hex_to_binary(char *argv[]){
char binaryNumber[MAX],hexaDecimal[MAX];
long int i=0;
scanf(“%s”,argv[1]);
printf("\nEquivalent binary value: ");
while(hexaDecimal[i]){
switch(hexaDecimal[i]){
case '0': printf("0000"); break;
case '1': printf("0001"); break;
case '2': printf("0010"); break;
case '3': printf("0011"); break;
case '4': printf("0100"); break;
case '5': printf("0101"); break;
case '6': printf("0110"); break;
case '7': printf("0111"); break;
case '8': printf("1000"); break;
case '9': printf("1001"); break;
case 'A': printf("1010"); break;
case 'B': printf("1011"); break;
case 'C': printf("1100"); break;
case 'D': printf("1101"); break;
case 'E': printf("1110"); break;
case 'F': printf("1111"); break;
case 'a': printf("1010"); break;
case 'b': printf("1011"); break;
case 'c': printf("1100"); break;
case 'd': printf("1101"); break;
case 'e': printf("1110"); break;
case 'f': printf("1111"); break;
default: printf("\nInvalid hexadecimal digit %c ",hexaDecimal[i]); return 0;
}
i++;
}
return 0;
}
я получаю ошибки, такие как:
part1_V2.c: In function ‘hex_to_binary’:
part1_V2.c:8: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
part1_V2.c:22: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
part1_V2.c:26: error: stray ‘\342’ in program
part1_V2.c:26: error: stray ‘\200’ in program
part1_V2.c:26: error: stray ‘\234’ in program
part1_V2.c:26: error: stray ‘\342’ in program
part1_V2.c:26: error: stray ‘\200’ in program
part1_V2.c:26: error: stray ‘\235’ in program
part1_V2.c:59: error: expected ‘{’ at end of input
Заранее спасибо!
Хорошо, ребята, спасибо за вашу помощь я получил мой код работает, но теперь я есть проблемы с выходом:
текстового файла Перехожу к основной функции содержит:
«1283» (line1) "5105" (следующая строка)
Это шестнадцатеричные значения в файле. Поэтому, когда я запускаю программу я получаю выход:
Эквивалента двоичного значения: 0001001010000011 nvalid шестнадцатеричной цифры Invalid шестнадцатеричной цифры
Эквивалента двоичного значения: 0101000100000101
Я задаюсь вопросом, почему я получаю неверные шестнадцатеричный цифровой вывод? Это потому, что он пытается преобразовать «\ n» или пустое пространство в двоичный?
Действительно? Компиляция? – rendon
Как насчет добавления ';' в конце строки 5? – rendon
Любопытно, что/кто предложил использовать 'feof (файл)' для определения EOF? – chux