0
char str[33] = "";
snprintf(str, sizeof str, "%s%s%s%s", preg->opbits,preg->rsbits,preg->rtbits,preg->ibits);
char *instruction = &str[0]

我正在尝试从 32 位长的 MIPS 汇编指令的字符串表示的不同元素构建二进制字符串,其中 opbits 是 6 位操作码,rsbits 是第一个源寄存器的 5 位数,rtbits 是立即数 (i) 类型指令的目标寄存器的 5 位编号,而 ibits 表示 16 位整数值。我希望将它们连接成一个字符数组,然后将一个指针分配给该数组的第一个元素,该指针可以传递给一个已经定义的函数,将一个写为字符串的数字转换为一个字符串(在指定的基数中,该基数也传递给 strtoint 函数) 为整数值。

我的主要问题是,我是否需要考虑要连接的每个字符串末尾的空字节,其次,这行得通吗?

4

1 回答 1

3

我的主要问题是,我是否需要考虑要连接的每个字符串末尾的空字节,其次,这行得通吗?

不,您不必为每个子字符串计算一个空字符,您只需为结果字符串连接添加 1 个空字符

因此,如果您的字符串结果的长度为 32 + 1(空字符)= 33

因此,如果结果连接字符串的长度为 32,则您的定义是可以的

char str[33] = "";
于 2013-02-01T16:42:49.343 回答