2012-04-05 82 views
1

我想从pascal中的同一行读取两个字符串变量。
两个字符串由空格分隔。如何从Pascal中的同一行读取两个字符串?

我已经尝试阅读它像一个字符串,然后将它分成两部分,但然后我有一个问题,因为该字符串是大于255个字符。

这里是我试图读取的字符串:

kyGOwpLobZvGynmdpiujxhUwphFsTTipuyAwpeffcckLuPouxmpQwGeMxqDoIqeWVkpdLueirlLiabfhxjnwbyMDYUfhGmlnFJdmfhtxljPqicbotSBvkKaQdsmbyrhmmSdexHjwdnecjRtzef mkhRyGOwpLobZvGynmdpiujxhUwphFsTTipuyAwpeffcckLumWbnbfdhlzFmnkkrwNsewPouxmpQwGeMxqDoIqeWVkpdLueirlLiabfhxjnwbyMDYUfhGmlnFJdmfhtxljPqicbotSBvkKaQdsmbyrhmmSdexHjwdnecjRtzeajfz`

线并不总是相同的长度,而空的空间是不是在同一个位置。

我想弄清楚是否从第二个字符串中删除一些字符,你可以得到第一个。

例如:STRING aSgasTsaRoIfIfdsG
应该会产生正面答案。

这是检查的代码。

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 *字符)?你能发布你尝试过的代码吗?粘贴一长串字符串和对问题的简要描述并没有多大用处,因此在这里首选您首先要努力解决问题。你能编辑你的问题并提供一些额外的信息吗?谢谢。 :) – 2012-04-05 22:39:31

回答

1

而不是使用readln()读取整个行也许你可以使用read()char类型的变量每次向读取一个字符的你的第一个字符串,直到你检测到一个空格然后读取第二个字符串。

0

您可以使用freepascal编译器并通过ansistring替换字符串,该字符串最多可以是2^16 = 65536个字符。

相关问题