scanf
(и двоюродные братья) возвращает количество успешных конверсий. Если вы укажете 0 конверсий, то возвращаемое значение всегда будет равно 0.
Чтобы использовать scanf
для этой задачи, я бы, вероятно, воспользовался парой преобразований в наборы:
char a[2], b[2];
if (scanf("%1[{] %1[[]", &a, &b) == 2)
printf("Matched");
Или, вы можете немного упростить это:
char a[2];
if (scanf("{ %1[[]", &a) == 1)
В любом случае, мы указали, что каждый набор сканирования соответствует только одному указанному символу, но это все еще преобразование, поэтому мы можем видеть, был ли он успешным или неудачным.
К сожалению, нам все еще нужно присвоить результат где-нибудь. scanf
поддерживает использование *
, например, так: "% * s", чтобы сказать ей читать строку, но нигде не сохранять результат - но когда вы это сделаете, это преобразование не засчитывается в возвращаемом значение, так что (так же, как и раньше) мы не можем использовать его, чтобы определить, получили ли мы соответствие или нет.