我使用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忽略这些空格呢?
在格式字符串中的文字字符前放置空格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)
如果你%在输入中匹配一个符号,你会%%在格式字符串中使用;那也会跳过前导空格。