我希望您的帮助能够编写一个C语言代码,用于打印字符串中的十六进制。
我做了这样的事情:
main()
{
char hex[]={ "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F",..................., "FF"};
int Hex;
printf("\nEnter the Hex No.\n");
scanf("%d",&Hex);
printf("\n String value is:");
printf("%c",hex[Hex]);
}
但是当我尝试实现它时,我的编译器出错了 在初始化字符串矩阵时,你能告诉我问题是什么,或者你可能对此有更好的想法吗?
祝你好运
答案 0 :(得分:5)
您创建一个char
数组,但然后使用字符串(即char *
)初始化它。
将类型更改为char *
char *hex[] = { ... };
它应该会更好。
您还需要更改输出,而不是打印字符串
printf("%s", hex[Hex]);
当然更容易直接打印hext数字:
printf("%02X", Hex);
然后你不需要数组。
答案 1 :(得分:1)
你的方式是错误的。实际的方式是
char *hex[] ={"00","01","02" ....}
答案 2 :(得分:0)
您可以通过0x ##表示法在c ++代码中以十六进制表示字符;以下将编译。
char hex[] = {0x01,0x02,...};
答案 3 :(得分:0)
您需要使用char* hex[] = {...}
。
答案 4 :(得分:0)
我不太明白你的目的是什么......如果你希望用户 输入十六进制值 ,你的代码暗示: / p>
int Hex;
printf("\nEnter the Hex No.\n");//This tells me you want me to enter 12A4 (a hex value)
然后你应该扫描一个十六进制值:
scanf("%x",&Hex); // The %x tells scanf that the incoming value is base 16
如果您希望用户在dec(基数为10)中输入一个数字,那么您将以十六进制显示它想要的内容:
int Hex;
printf("\nEnter the number to convert to Hex.\n");
scanf("%d",&Hex);
printf("\n String value is:");
printf("%#x",Hex);
请注意,格式字符串"%#x"
将以0x<number>
格式显示一个值,非常方便您无需在自己身上添加0x
。
无需乱用char数组