Если буфер когда-либо слишком мал, то строка будет обрезана. Вы надеетесь, что ваши тесты поймают это, так как вы получите неправильные результаты.
Опять же, проверка возвращаемого значения не требует много подробностей. Как говорит Оли, assert
дешево:
int result = snprintf(buf, sizeof buf, "%s.%d", str, time);
assert(result >= 0 && result <= (sizeof buf) - 1);
Если честно, я бы не всегда проверял, но это зависит от того, почему я думаю, что str
не может быть таким длинным. Если это по действительно фундаментальной причине (например, это имя файла из структуры dirent
, а MAXBUF
определено в терминах MAX_FILENAME
), то я, вероятно, не стал бы беспокоиться. Если это потому, что есть какая-то проверка в другом месте, или вызывающий обязан передать строку только определенной длины, то это может быть идеей для assert
, просто из-за шанса поймать чужую ошибку когда-нибудь. Очевидно, что если str
- это какой-либо внешний вид без проверки, то важно проверить.