Учитывая некоторые неизвестные входные данные, как определить, какие переменные подставляются в оператор (s)printf
?
printf("%s %s", "a", "b"); // both used
printf("%s", "a", "b"); // only the first one used
printf('%1$s %1$s', "a", "b"); // " "
printf('%s %1$s', "a", "b"); // " "
printf('%1$s %s %1$s', "a", "b"); // " "
printf('%2$s', "a", "b"); // only the second one used.
Проверка результирующей строки на наличие первой или второй переменных не поможет, поскольку они могут иметь одинаковое значение.
В моей собственной ситуации есть только две переменные, которые можно заменить, и мне нужно знать, используется ли вторая или нет.