#cpp #c #language_lawyer
На Хабре говорится: Спецификатор "%n" не учитывает количество символов, выведенных с помощью таких спецификаторов, как "%f". Поэтому, перед "%n" поставим один пробел, чтобы записать в isOkPassword значение 1. Однако, проверка показывает, что это вовсе не так: #includeint main(void) { int n; printf("%f %n\n", 12.0, &n); printf("%d", n); return 0; } 12.000000 10 А как на самом деле должен работать этот код? Вроде %n для того и нужен, чтобы учитывать форматы, ведь иначе в нём не было бы смысла.
Ответы
Ответ 1
Спецификатор %n приводит к записи в аргумент-приемник общего количества символов посланных к этому моменту в выходной поток ("...the number of characters written to the output stream so far by this call to fprintf."). Никакого "не учитывания" каких-то спецификаторов формата в нем нет и быть не может.
Комментариев нет:
Отправить комментарий