char str[33] = "";
snprintf(str, sizeof str, "%s%s%s%s", preg->opbits,preg->rsbits,preg->rtbits,preg->ibits);
char *instruction = &str[0]
我正在尝试从MIPS汇编指令的字符串表示的不同元素构建二进制字符串,该指令是32位长,其中opbits是6位操作码,rsbits是第一个源寄存器的5位数, rtbits是立即(i)类型指令的目标寄存器的5位数,ibits代表16位整数值。我希望将它们连接成一个字符数组,然后指定一个指向该数组的第一个元素的指针,指针可以传递给已定义的函数,转换一个写为字符串的数字(在指定的基数中,也传递给strtoint函数) )到整数值。
我的主要问题是,我是否需要考虑要连接的每个字符串末尾的空字节,其次,这会有效吗?
答案 0 :(得分:3)
我的主要问题是,我是否需要考虑空字节 要连接的每个字符串的结尾,其次是这个 工作?
不,您不必为每个子字符串计算空字符,您只需为结果字符串连接添加1个空字符
因此,如果字符串结果的长度为32 + 1(空字符)= 33
因此,如果结果条件字符串的长度为32
,则定义正常char str[33] = "";