【发布时间】:2017-04-01 13:22:25
【问题描述】:
我正在尝试将一些二进制代码转换为程序集,但作为任务的一部分,我不确定如何将数组中的最后 5 个元素(共 8 个)转换为新数组。如您所见,我已经设法为操作码(前 3 个元素)创建了一个数组,但不确定如何将操作数放入新数组或编辑初始数组。
感谢所有帮助。
void convert_to_assembly(char bin[])
{
int i;
printf("The binary code before spiliting is: ");
char binary[9] = {'1','0','1','1','1','1','1','0'};
for(i=0;i<=7;i++)
{
printf("%c",binary[i]);
}
printf("\n");
char opCode[4];
strncpy(opCode,binary,3);
printf("opcode: ");
for(i=0;i<3;i++)
{
printf("%c",opCode[i]);
}
printf("\n");
}
输出
The binary code before splitting is: 10111110
opcode : 101
operand: ???????
【问题讨论】:
-
Picky:您的意思是只初始化 9 数组的 8 个元素吗?如果您打算将其用作字符串,则最后一个元素不会自动初始化为
'\0'。 -
@WeatherVane 我认为他这样做是因为他的循环明确计算了 8 个元素。
-
@WeatherVane 我认为这是 0 终止字符数组的一种方法,因此有一个 C 字符串。 =P。不完全直观,未指定的尾随内容零是否填充了指定长度的序列? (今天早上错过了我的咖啡,对不起,如果我要休息)。
-
@WhozCraig mybad:未指定的元素将默认初始化为
0。 -
你试过
strncpy(bin, binary+3, 5);吗?并不是说将数据复制到长度未指定的目标中是最好的主意,也没有确定的终止,但仍然。