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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.