我目前正在创建一个加密/解密应用程序作为实践,为此,我一直在尝试使用snprintf将整数转换为char数组,但是,例如,如果我有一个4位数的整数,它只会添加第一个3.到目前为止,这是我的代码:
int encrypt(int num, bool type)
{
char buffer[sizeof(num)];
snprintf(buffer, sizeof(buffer), "%d", num);
printf(buffer);
return 0;
}
任何帮助都会很棒!
答案 0 :(得分:1)
缓冲区的大小应足以容纳转化的数字加上最终的'\0'
和潜在的减号。 sizeof(num)
是int
变量的字节数,很可能是4
,不足以转换大于999的数字,但snprintf
的写入数不会超过缓冲区的大小,包括最终的'\0'
,因此只有前3位数。
您可以对int
的大小进行假设,并将buffer
定义为:
char buffer[12]; /* large enough for -2147483648 */
或者你可以准确而便携地做到:
char buffer[sizeof(num) * CHAR_BIT / 3 + 3];