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


         

не пробельные символы. Они должны


–        обычные, не пробельные символы. Они должны точно совпадать с соответствующими символами во входном потоке;
–        спецификации формата. Как упоминалось ранее, они в основном аналогичны спецификациям, используемым в процедуре printf.
Следующий пример показывает использование процедуры scanf с несколькими переменными различных типов:
(* Демонстрационная программа для процедуры scanf *)
uses stdio;
var
  i1, i2:integer;
  fit:float;
  str1, str2:array [0..9] of char;
begin
  scanf('%2d %2d %f %s %s', [@i1, @i2, @flt, pchar(str1), pchar(str2)]);
  .
  .
  .
end.
Первые две спецификации в строке формата сообщают процедуре scanf, что она должна считать два целых числа (в десятичном формате). Так как в обоих случаях ширина поля равна двум символам, предполагается, что первое число должно находиться в двух считанных первыми символах, а второе – в двух следующих (в общем случае ширина поля обозначает максимальное число символов, которое может занимать значение). Спецификации %f
соответствует переменная типа single. Спецификация %s
означает, что ожидается строка, ограниченная пробельными символами. Поэтому, если подать на вход программы последовательность
11 12 34.07 keith ben
то в результате получится следующее:
переменная i1
будет иметь значение 11
переменная i2
будет иметь значение 12
переменная fit будет иметь значение 34.07
строка str1 будет содержать значение keith
строка str2 будет содержать значение ben
Обе строки будут заканчиваться нулевым символом. Обратите внимание, что переменные str1 и str2 должны иметь достаточно большую длину, чтобы в них поместились вводимые строки и нулевой символ в конце. Нельзя передавать процедуре scanf неинициализированный указатель.
Если задана спецификация формата %s, то предполагается, что строка должна быть ограничена пробельными символами. Для считывания строки целиком, включая пробельные символы, необходимо использовать код формата %с. Например, оператор

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