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


Описание - часть 3


%с    Аргумент имеет тип 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;




- Начало -  - Назад -  - Вперед -



Книжный магазин