忽略scanf格式的空格

时间:2018-11-07 23:39:19

标签: c scanf

我使用给定格式的scanf读取输入:

scanf("<%d;%d>%c", &lo, &hi, &op);

这接受诸如<1;10>k之类的字符串。当我完全按照该语法输入时,此方法有效,但不适用于空格,例如这行不通:

    <      1 ;
3 >      
 k

那么如何使scanf忽略这些空格?

1 个答案:

答案 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