2012-04-05 3 views
1

Я пытаюсь прочитать две строковые переменные из одной строки в pascal.
Две строки разделены пустым пространством.Как читать две строки из одной строки в Паскале?

Я пробовал читать его как одну строку, а затем разделять ее на две части, но тогда у меня проблема, потому что строка больше 255 символов.

Вот строка я пытаюсь прочитать:

kyGOwpLobZvGynmdpiujxhUwphFsTTipuyAwpeffcckLuPouxmpQwGeMxqDoIqeWVkpdLueirlLiabfhxjnwbyMDYUfhGmlnFJdmfhtxljPqicbotSBvkKaQdsmbyrhmmSdexHjwdnecjRtzef mkhRyGOwpLobZvGynmdpiujxhUwphFsTTipuyAwpeffcckLumWbnbfdhlzFmnkkrwNsewPouxmpQwGeMxqDoIqeWVkpdLueirlLiabfhxjnwbyMDYUfhGmlnFJdmfhtxljPqicbotSBvkKaQdsmbyrhmmSdexHjwdnecjRtzeajfz`

линия не всегда такой же длины, а пустое пространство не на том же месте.

Я пытаюсь выяснить, удалив некоторые символы из второй строки, вы можете получить первый.

Пример: STRING aSgasTsaRoIgfNfdsG
должен дать положительный ответ.

Вот код, который проверяет это.

q:=1; 
for m:=1 to length(b) do 
begin 
if b[m] = a[q] then 
q:=q+1; 
end; 

q:=q-1; 

writeln(q); 

if q = length(a) then 
writeln('YES') 
else 
writeln('NO'); 

где a - первая строка, b - вторая.

Я читаю первую большую строку как одну переменную, а затем разрезаю ее на две части.
Проблема возникает, когда первая строка больше 255 символов. Вот почему я хочу знать, как я могу читать две строки из одной строки.

код я использую для разделения строк:

readln(x); 

x:=LONGSTRINGHERE; 
blank:=' '; 
Location := Pos(blank, x); 

a:=Copy(x, 1, (Location-1)); 

b:=Copy(x, (Location+1), length(x)); 
+0

Добро пожаловать в StackOverflow. Как долго строка текста? Откуда вы его взяли? Всегда ли пространство всегда в одном месте (например, символ * x *)? Можете ли вы опубликовать код, который вы пробовали до сих пор, который не работает? Вставка длинной строки и краткое описание проблемы не дают многого, и здесь предпочтительнее, чтобы вы сначала попытались решить проблему самостоятельно. Не могли бы вы изменить свой вопрос и предоставить дополнительную информацию? Благодарю. :) –

ответ

1

Вместо того, чтобы использовать readln() читать всю строку, возможно, вы могли бы использовать read() с переменной типа char читать один символ за один раз в ваша первая строка, пока вы не определите пробел, а затем прочитайте вторую строку.

0

Вы можете использовать компилятор freepascal и заменить строку на регистрацию, которая может быть до 2^16 = 65536 символов.

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