cat*_*eof 0 c c++ debugging format-specifiers
我没有正确使用C中的格式说明符.几行代码:
int main()
{
char dest[]="stack";
unsigned short val = 500;
char c = 'a';
char* final = (char*) malloc(strlen(dest) + 6);
snprintf(final, strlen(dest)+6, "%c%c%hd%c%c%s", c, c, val, c, c, dest);
printf("%s\n", final);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想要的是复制
final [0] =随机char final [1] =随机char final [2]和final [3] =短阵列final [4] =另一个char ....
我的问题是我想将short int的两个字节复制到最终数组的2个字节.
谢谢.
我很困惑 - 问题是你说strlen(dest)+6的是将final字符串的长度限制为10个字符(加上一个空终止符).如果你说strlen(dest)+8那么整个字符串就有足够的空间.
更新
尽管short可能只有2个字节,但当它作为字符串打印时,每个字符将占用一个字节.所以这意味着如果你要写一个10000以上的数字,它可能需要最多5个字节的空间来写一个字符串的短.
现在,如果使用%x格式说明符将字符串的short写为十六进制数字,则它将占用不超过2个字节.