Существует также модификатор %n
, который может помочь в определенных обстоятельствах. Возвращает столбец, в котором строка была до сих пор. Пример: вы хотите написать несколько строк, которые находятся в пределах ширины первой строки, как таблица.
int width1, width2;
int values[6][2];
printf("|%s%n|%s%n|\n", header1, &width1, header2, &width2);
for(i=0; i<6; i++)
printf("|%*d|%*d|\n", width1, values[i][0], width2, values[i][1]);
напечатает 2 столбца одинаковой ширины любой длины, которую могут иметь две строки header1
и header2
.
Я не знаю, есть ли у всех реализаций %n
, но Solaris и Linux имеют.