使用snprinf()我需要考虑每个连接字符串末尾的空字节吗?

时间:2013-02-01 16:39:50

标签: c string-concatenation mips32 printf

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函数) )到整数值。

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

1 个答案:

答案 0 :(得分:3)

  

我的主要问题是,我是否需要考虑空字节   要连接的每个字符串的结尾,其次是这个   工作?

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

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

因此,如果结果条件字符串的长度为32

,则定义正常
char str[33] = "";