我使用给定格式的scanf
读取输入:
scanf("<%d;%d>%c", &lo, &hi, &op);
这接受诸如<1;10>k
之类的字符串。当我完全按照该语法输入时,此方法有效,但不适用于空格,例如这行不通:
< 1 ;
3 >
k
那么如何使scanf
忽略这些空格?
答案 0 :(得分:4)
在scanf()
的格式字符串中,在文字字符之前放置空格。实际上,大多数%
转换规范之前都不需要空格(%c
,%n
和%[…]
是例外;它们不是跳过白色空格),但它们也可能出于对称性而存在(它们不会造成伤害)。因此:
if (scanf(" < %d ; %d > %c", &lo, &hi, &op) == 3)
…all OK — at least, three values were read OK…
如果在输入中匹配%
符号,则可以在格式字符串中使用%%
;也会skip leading white space。