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


         

и будет выводиться без изменений,


%с    Аргумент имеет тип char и будет выводиться без изменений, даже если он является «непечатаемым» символом. Численное значение символа можно вывести, используя код формата для целых чисел. Это может понадобится при невозможности отображения символа на терминале
%s        Соответствующий аргумент считается строкой (то есть указателем на массив символов). Содержимое строки передается дословно в выходной поток. Строка должна заканчиваться нулевым символом
Следующий пример, процедура warnuser, демонстрирует использование кодов %с
и %s. Она использует процедуру fprintf для вывода предупреждения на стандартный вывод – поток stdout. Если stdout соответствует терминалу, то процедура также пытается подать три звуковых сигнала, послав символ Ctrl+G (символ ASCII BEL, который имеет шестнадцатеричное значение $7). Эта процедура использует функцию isatty, определяющую, соответствует ли дескриптор файла терминалу, и процедуру fileno, возвращающую дескриптор файла, связанный с потоком. Функция isatty является стандартной функцией UNIX, представленной в главе 9, а процедура fileno является частью стандартной библиотеки ввода/вывода и описана в разделе 11.7.
(* Процедура warnuser — вывод сообщения и звукового сигнала *)
uses stdio, linux;
(* Этот код на большинстве терминалов вызывает *)
(* подачу звукового сигнала *)
const
  bel:char=$7;
procedure warnuser (const str:pchar);
begin
  (* Это терминал?? *)
  if isatty(fileno(stderr)) then
    fprintf(stdout, '%c%c%c', [bel, bel, bel]);
  fprintf(stdout, 'Предупреждение: %s'#$a, [string]);
end;

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