使用此功能我有一个有趣的问题。 我用它如下:
int nSeq = 1;
char cBuf[8];
int j = sprintf_s(cBuf, sizeof(cBuf), "%08d", nSeq);
每次我得到例外。例外是缓冲到小。 当我将函数中的第二个字段更改为sizeof(cBuf)+ 1。
如果我只想复制8个字节并且我有一个包含8个字节的数组,为什么我需要添加一个?
答案 0 :(得分:12)
您的缓冲区包含8个位置。你的字符串包含8个字符和一个空字符来关闭它。
答案 1 :(得分:2)
由于%08d,您的字符串将需要终止'\ 0'和8字节数据(00000001)。 所以你必须大小为9。
答案 2 :(得分:1)
所有sprintf函数都添加一个null来终止字符串。所以实际上你的字符串是9个字符长。 8个字节的文本和结束的零