ВСЕГДА ли snprintf () завершается нулевым завершением?

Всегда ли 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 могут делать, что не является стандартным поведением.

73
задан Adrian McCarthy 20 August 2013 в 20:37
поделиться