2014-02-09 4 views
0

У меня есть задание для чтения символов один за другим из одного текстового файла и записи их в другой текстовый файл с использованием сценария. Я до такой степени, что могу читать строки за строкой из текстового файла и писать строку в другую.Чтение символов из текстового файла

Эта версия работает ...

%! PS

/infile (input.txt) (r) file def % open files and save file objects 
/outfile (output.txt) (w) file def 
/buff 128 string def % your buffer for reading operations 
{ % loop 
     infile buff readstring 
     { %ifelse 
       outfile exch writestring 
     } 
     { %else 
       outfile exch writestring 
       infile closefile 
       outfile closefile 
       exit % exit the loop 
     } ifelse 
} bind loop 

Но когда я пытаюсь читать отдельные символы Я получаю сообщение об ошибке говорящее его typemismatch и я не уверен, как решить.

Вот код:

/infile (input.txt) (r) file def % open files and save file objects 
/outfile (output.txt) (w) file def 
/buff 1 string def % your buffer for reading operations 
{ % loop 
     infile buff read 
     { %ifelse 
       outfile exch write 
     } 
     { %else 
       outfile exch write 
       infile closefile 
       outfile closefile 
       exit % exit the loop 
     } ifelse 
} bind loop 

ответ

0

Так ... Где происходит ошибка? читай пиши ? что-то другое ?

Всякий раз, когда вы отлаживаете PostScript, это должно быть важным местом для начала, выяснить, какой оператор бросает вашу ошибку, и где в вашей программе выдается ошибка. Если вы не уверены, что покроете 'print' и '==' вокруг, чтобы следовать за потоком выполнения. Например

infile buff read 
    { %ifelse 
      (in read loop, character read is) print dup == flush 
      outfile exch write 
    } 
    { %else 
      outfile exch write 
      infile closefile 
      outfile closefile 
      exit % exit the loop 
    } ifelse 

Обратите внимание, что вы пытаетесь написать выходной_файл, когда «читать» возвращает ЛОЖЬ (ваш% еще пункт), что на самом деле не будет работать, потому что «читать» ничего не оставлять на stack (он ничего не читал, поэтому он возвращал false). Я подозреваю, что это ваша проблема, хотя я не пытался отлаживать программу, отличную от проверки.

Смежные вопросы