Каков тип «точности»? спецификатор для printf?

Предположим, я использую следующее printf() строка спецификатора:

printf("%.*s", length, str);

который спрашивает printf() в напечатать первый length персонажи в str. Вопрос в том, какой тип length есть? Я вижу только краткие упоминания целое число в документации.

Так выглядит int, Тогда похоже, что я не могу использовать следующий код, когда строка очень длинная:

const char* startOfString = ...
const char* middleOfString = ...
printf("%.*s", (int)( middleOfString - startOfString ), startOfString);

Похоже, я не могу вывести больше, чем INT_MAX символы таким образом.

Так какой тип точность? Это int либо это size_t или что-нибудь еще?

1

Решение

Это int, и вы не можете напечатать больше, чем INT_MAX символы таким образом.

Из стандарта C, § 7.21.6.1, абз. 5:

ширина поля, или точность, или и то, и другое могут быть обозначены звездочкой. В
этот случай int Аргумент предоставляет ширину поля или точность.

4

Другие решения


По вопросам рекламы [email protected]