Является ли snprintf всегда нулевым завершением буфера назначения?
Другими словами, достаточно ли этого:
char dst[10];
snprintf(dst, sizeof (dst), "blah %s", somestr);
или вам нужно сделать это, если somestr достаточно длинный?
char dst[10];
somestr[sizeof (dst) - 1] = '\0';
snprintf(dst, sizeof (dst) - 1, "blah %s", somestr);
Меня интересует как то, что говорит стандарт, так и то, что может сделать какой-то популярный libc, который не является стандартным поведением.