LINUX.ORG.RU

lisp: циклы


0

0

Вычитываю символы из stream'а, пока не закончаться. Нужно выбрать цикл, чтоб сначала происходило вычитывание, а потом проверка на наличие и если пусто - выход. Не получается никак. Подскажите плз., с примером.

anonymous
Ответ на: комментарий от yyk

(do ((ch #\INIT (read-char (process-output sh-stm) t #\Nul)))
    ((char= ch #\Nul) str1)
  (setf str1 (concatenate 'string str1 (string ch))))

Ну вот что получилось. Всё бы хорошо, но #\INIT -любой
инициализационный символ окажется в str1, чего нельзя. Как этого избежать ?

anonymous
()
Ответ на: комментарий от anonymous

1. Ты пытаешься прочитать z-string или что?

2. Если нет - может лучше таки читать построчно? А то мало ли что...

3. Вместо #\INIT повтори (read-char (process-output sh-stm) t #\Nul)

yyk ★★★★★
()
Ответ на: комментарий от yyk

> 1. Ты пытаешься прочитать z-string или что?

Читаю из выхода (run-program...)ю

> 3. Вместо #\INIT повтори (read-char (process-output sh-stm) t #\Nul)

Спасибо. То что надо.

anonymous
()
Ответ на: комментарий от anonymous

> Читаю из выхода (run-program...)ю

А ты уверен, что вывод вызываемой программы не может выдать нулевой но не последний код символа?

yyk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.