Бесконечный цикл до получения правильного
* Иначе использовать приглашение по умолчанию
* pdefault *)
if prompt <> nil then
p_use := prompt
else
p_use := pdefault;
(* Бесконечный цикл до получения правильного ответа. *)
while true do
begin
(* Вывести приглашение *)
printf ('%s > ', [p_use]);
if fgets (buf, ANSWSZ, stdin) = nil then
begin
yesno:=EOF;
exit;
end;
(* Удалить пробельные символы *)
p := buf;
while isspace (byte(p^)) do
inc(p);
case p^ of
'Y','y':
begin
yesno:=YES;
exit;
end;
'N','n':
begin
yesno:=NO;
exit;
end;
else
printf (#$a'%s'#$a, [error]);
end;
end;
end;
var
ans:integer;
begin
ans := yesno (nil);
printf ('Получен ответ: ',[]);
if ans = YES then
printf ('Да'#$a,[])
else
printf ('Нет'#$a,[]);
end.
В этом примере предполагается, что stdin связан с терминалом. Как можно сделать эту процедуру более безопасной?
Обратными процедурами для gets и fgets будут соответственно процедуры puts и fputs.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий