что означает "%. * S"?
desc
, ниже, является символьным указателем , который не обязательно должен указывать на строку 1 . Печать будет продолжаться до тех пор, пока не будут напечатаны MAX_BUF_LEN
чартеры ( точность ) или пока не будет прочитан нулевой символ - что произойдет раньше.
sprint(buf_ptr, "%.*s", MAX_BUF_LEN, desc);
что означает "% 20.20s" ... в snprintf?
Давайте для ясности используем два разных значения: "%19.21s"
.
desc
- это символьный указатель , который не обязательно должен быть строкой. Печать будет продолжаться до тех пор, пока не будут напечатаны 21
чартеры или пока не будет прочитан нулевой символ - который всегда будет первым. Если количество печатаемых чартеров меньше 19 ( минимальная ширина ), заполните поле слева пробелами, чтобы их общее количество составило не менее 19 символов.
sprint(buf_ptr, "%19.21s", desc);
что означает ... "% .28s" в snprintf?
Точно так же, как sprint(buf_ptr, "%.*s", 28, desc);
В общем, подумайте о "%minimum.maximum s"
1 A string - это непрерывная последовательность символов, оканчивающаяся и включающая первый нулевой символ.