У меня есть следующий код:
scanf(" %Xs %Ys", buf1, buf2);
Где X и Y должны быть целыми числами. Проблема в том, что значения для X и Y являются константами времени компиляции, и даже если бы я хотел жестко закодировать значения в строку формата, я не могу, потому что я не знаю значений. В printf вы можете отправить переменную ширины вместе с аргументами с помощью «%*s». Есть ли аналог для scanf?
РЕДАКТИРОВАТЬ: Чтобы уточнить, константы известны во время компиляции, но не во время кодирования, и вообще не мной. Они могут различаться в зависимости от платформы или реализации, и они могут измениться после того, как я закончу. Даже если бы они этого не сделали, я все равно не хотел бы, чтобы размеры буфера дублировались в строках формата, готовые к segfault в ту минуту, когда я забуду их синхронизировать.
scanf()
означает подавление любого присвоения для этого значения. Ничего похожего на '' вprintf()
дляscanf()
нет. Керниган и Пайк делают то, что предлагает @sambowry в «Практике программирования». - person Jonathan Leffler   schedule 11.10.2009