Программирование на C и C++

Онлайн справочник программиста на C и C++

Спецификатор %n

Спецификатор формата %n отличается от других спецификаторов. Вместо того, чтобы говорить printf() о необходимости вывода чего-либо, он заставляет printf() инициализировать переменную, на которую указывает аргумент, соответствующий данному спецификатору, значением, равным числу уже выведенных символов. Другими словами, значение, соответствующее спецификатору формата %n, должно быть указателем на переменную. После того как printf() завершит работу, переменная будет содержать число выведенных символов до момента, когда был встречен %n. Стоит изучить следующую программу, чтобы понять работу данного спецификатора:

#include <stdio.h>
int main(void)
int count;
printf ("this%n is a test\n", &count);
printf ("%d", count);
return 0;
}

Программа выводит this is a test за числом 4. Спецификатор формата %n, как правило, используется для выполнения динамического форматирования.