printf («% s - строка», «% s - строка»);
Полагаю, путаница заключается в том, что printf будет делать со вторым% s.
Чтобы очистить это, printf не является рекурсивной функцией. Если вы печатаете строку и эта строка имеет какой-либо идентификатор формата, она не считается идентификатором формата. Это считается простой строкой. Таким образом, в этом случае второй «% s является строкой» является простой строкой. % s в этой строке не является идентификатором формата.
Если у вас было что-то вроде printf («% s% s - строка», «% s% s - строка»);
Тогда да, вы получите ошибку во время выполнения, сообщающую, что в printf отсутствует какой-либо аргумент.