Игнорировать пробелы в формате scanf - PullRequest
0 голосов
/ 08 ноября 2018

Я читаю ввод, используя scanf в заданном формате:

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

Это принимает некоторую строку как <1;10>k. Это работает, когда я вхожу именно в этот синтаксис, но не работает с пробелами, например, это не сработает:

    <      1 ;
3 >      
 k

Так как же заставить scanf игнорировать эти пробелы?

1 Ответ

0 голосов
/ 08 ноября 2018

Поставьте пробелы перед литеральными символами в строке формата для scanf(). На самом деле вам не нужны пробелы, прежде чем большинство % спецификаций преобразования (%c, %n и %[…] являются исключениями; они не пропускают пробелы), но они также могут быть там для симметрии (они не вредят). Следовательно:

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

Если бы вы соответствовали символу % на входе, вы бы использовали %% в строке формата; пропустит также пробел .

...