Snprintf 总是 null 终止目标缓冲区吗?
换句话说,这就足够了吗:
char dst[10];
snprintf(dst, sizeof (dst), "blah %s", somestr);
或者你必须这样做,如果一些长度足够?
char dst[10];
somestr[sizeof (dst) - 1] = '\0';
snprintf(dst, sizeof (dst) - 1, "blah %s", somestr);
我对标准说了什么,以及一些流行的 libc 可能做了什么不是标准行为感兴趣。