忽略 scanf 格式的空格

Joz*_*ipa -1 c scanf

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

scanf("<%d;%d>%c", &lo, &hi, &op);
Run Code Online (Sandbox Code Playgroud)

这接受一些像<1;10>k. 当我完全按照该语法输入时,这有效,但它不适用于空格,因此例如这将不起作用:

    <      1 ;
3 >      
 k
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*ler 5

在格式字符串中的文字字符前放置空格scanf()。在大多数%转换规范之前您实际上并不需要空格(%c,%n并且%[…]是例外;它们不会跳过空格),但它们也可以用于对称(它们不会造成伤害)。因此:

if (scanf(" < %d ; %d > %c", &lo, &hi, &op) == 3)
    …all OK — at least, three values were read OK…
Run Code Online (Sandbox Code Playgroud)

如果你%在输入中匹配一个符号,你会%%在格式字符串中使用;那也会跳过前导空格