Строка формата, которую вы нам показали, приведет к строке длиной 37. Исключая терминатор NULL.
В вашем массиве должно быть 38 элементов!
В настоящее время ваш timebuf
оставлен неопределенным, поэтому у вас есть неопределенное поведение в любом месте, которое ожидает строку с нулевым символом в конце.То, что вы видите \x7f
иногда и другие символы иногда (предположительно даже \0
иногда), это просто случайность.
Из документации cppreference.com C на strftime
:
Преобразует информацию о дате и времени из заданного календарного времени time
в многобайтовую символьную строку с нулевым символом в конце str
в соответствии со строкой формата format
.Записывается до count
байт.
А вот некоторые суммы:
Substr Length
---------+--------
"Date: " 6
"%a" 3
", " 2
"%d" 2
" " 1
"%b" 3
" " 1
"%Y" 4
" " 1
"%H" 2
":" 1
"%M" 2
":" 1
"%S" 2
" " 1
"%Z" 4
"\r\n" 2
NULL term. 1
-----------------
= 38