Системное программирование в UNIX средствами Free Pascal


         

считает любые 10 символов из


scanf ('%10c', [pchar(s1)]);
считает любые 10 символов из входного потока и поместит их в массив символов s1. Так как код формата с соответствует пробельным символам, то для получения следующего не пробельного символа должна использоваться спецификация %1s, например:
(* Считать 2 символа, начиная с первого не пробельного*)
scanf('%1s%1c',[@c1,@c2])
Другим способом задания формата строчных данных, не имеющим аналога в формате процедуры printf, является шаблон (scan set). Это последовательность символов, заключенных в квадратные скобки: [ и ]. Входное поле составляется их максимальной последовательности символов, которые попадают в шаблон (в этом случае пробельные символы не игнорируются и не попадают в поле, если они не являются частью шаблона). Например, оператор
scanf('%[ab12]%s',[str1,str2]);
при задании входной строки
2bbaa1other
поместит в строку str1 значение 2bbaa1, а в строку str2 – значение other.
Существует несколько соглашений, используемых при создании шаблона, которые должны быть знакомы пользователям grep или ed. Например, диапазон символов задается строкой вида a-z, то есть [a-d] равносильно [abcd]. Если символ тире (-) должен входить в шаблон, то он должен быть первым или последним символом. Аналогично, если в шаблон должна входить закрывающая квадратная скобка ], то она должна быть первым символом после открывающей квадратной скобки [. Если первым символом шаблона является знак ^, то при этом выбираются только символы, не
входящие в шаблон.
Для присваивания переменных типа longint или double после символа процента в спецификации формата должен находиться символ l. Это позволяет процедуре scanf определять размер параметра, с которым она работает. Следующий фрагмент программы показывает, как можно считать из входного потока переменные обоих типов:
var
  l:longint;
  d:double;
scanf('%ld %lf', [@l, @d]);
Другая ситуация часто возникает, если входной поток содержит больше данных, чем необходимо. Для обработки этого случая спецификация формата может содержать символ (*) сразу же после символа процента, обозначающий данное поле лишним. В результате поле ввода, соответствующее спецификации, будет проигнорировано. Вызов

Содержание  Назад  Вперед