我的代碼(如下)接受一個帶有十六進制值的文本文件,並將十六進制值轉換爲二進制,然後轉換爲十進制。然後,我只想通過在主函數中添加printf語句來打印輸出。但我不明白爲什麼我的主函數中的printf語句是錯誤的?在此先感謝將十六進制轉換爲二進制,然後轉換爲十進制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int hex_to_binary(char *hex_string, char *binary_line);
int bstr_to_dec(const char * str);
int main()
{
FILE *file;;
file = fopen("obj.txt","r");
char line[200];
char binary_line[20];
while(!feof(file)){
fgets(line,100,file);
//hex_to_binary(line,binary_line);
//printf("%s\n", binary_line);
printf("%d\n",bstr_to_dec((hex_to_binary(line,binary_line))); //This line is having errors
memset(binary_line,0,20);
}
fclose(file);
getchar();
return 0;
}
int hex_to_binary(char *hex_string, char *binary_line)
{
int i=0;
while(hex_string[i])
{
switch(hex_string[i])
{
case '0': strcat(binary_line,"0000"); break;
case '1': strcat(binary_line,"0001"); break;
case '2': strcat(binary_line,"0010"); break;
case '3': strcat(binary_line,"0011"); break;
case '4': strcat(binary_line,"0100"); break;
case '5': strcat(binary_line,"0101"); break;
case '6': strcat(binary_line,"0110"); break;
case '7': strcat(binary_line,"0111"); break;
case '8': strcat(binary_line,"1000"); break;
case '9': strcat(binary_line,"1001"); break;
case 'A': strcat(binary_line,"1010"); break;
case 'B': strcat(binary_line,"1011"); break;
case 'C': strcat(binary_line,"1100"); break;
case 'D': strcat(binary_line,"1101"); break;
case 'E': strcat(binary_line,"1110"); break;
case 'F': strcat(binary_line,"1111"); break;
case 'a': strcat(binary_line,"1010"); break;
case 'b': strcat(binary_line,"1011"); break;
case 'c': strcat(binary_line,"1100"); break;
case 'd': strcat(binary_line,"1101"); break;
case 'e': strcat(binary_line,"1110"); break;
case 'f': strcat(binary_line,"1111"); break;
case ' ':break;
case '\n':break;
}
i++;
}
printf("%d\n",bstr_to_dec(binary_line));
return 0;
}
int bstr_to_dec(const char * str)
{
int val = 0;
while (*str != '\0')
{
val = 2 * val + (*str++ - '0');
}
return val;
}
我得到這個錯誤
warning: incompatible integer to pointer conversion passing 'int' to parameter of type 'const char *' [-Wint-conversion]
printf("%d\n",bstr_to_dec((hex_to_binary(line,binary_line)));
'我找不出爲什麼我的主函數中的printf語句是錯誤的。它出什麼問題了? – 2014-10-20 05:19:10
更多(比)和hex_to_binary返回int不是字符串 – CharlieS 2014-10-20 05:41:10
看起來像你在這個編程任務的第三個問題。注意:不要使用while(!feof(file)){fgets(line,100,file);',使用'while(fgets(line,sizeof line,file)!= NULL){'。 – chux 2014-10-20 05:57:52