Pascal read()可变长度的字符串
我有两行值(从控制台输入),看起来如下所示:Pascal read()可变长度的字符串,pascal,freepascal,Pascal,Freepascal,我有两行值(从控制台输入),看起来如下所示: David 89000 Peter 99500 Jim 23999 END 1 除了在不知道字符串长度时循环读取字符外,还有没有其他方法可以将字符串和数字保存到变量中 str:=''; salary:=0; i:=1; while str<> 'END' do begin str:=''; salary:=0; read(ch); while ch <> ' ' do begi
David 89000
Peter 99500
Jim 23999
END 1
除了在不知道字符串长度时循环读取字符外,还有没有其他方法可以将字符串和数字保存到变量中
str:=''; salary:=0; i:=1;
while str<> 'END' do
begin
str:=''; salary:=0;
read(ch);
while ch <> ' ' do
begin
str:=str+ch;
read(ch);
end;
read(salary);
array[i].name:=str;
array[i].salary:=salary;
i:=i+1;
readln;
end;
str:='';工资:=0;i:=1;
而str'END'做什么
开始
str:='';工资:=0;
read(ch);
而你呢
开始
str:=str+ch;
read(ch);
结束;
阅读(工资);
数组[i]。名称:=str;
数组[i]。工资:=工资;
i:=i+1;
readln;
结束;
不具有标准I/O功能。当然,您可以将该代码放在单独的过程中,或使用tstringlist进行拆分。您可以通过调用ReadLn
来完成此操作,然后自己解析输入:
var
TextIn: string;
Person: string;
Salary: Integer;
begin
while true do
begin
ReadLn(TextIn); // Requires user to hit Enter
if Copy(TextIn, 1, 3) <> 'END' then
begin
Person := Copy(TextIn, 1, Pos(' ', TextIn) - 1);
Salary := StrToInt(Copy(TextIn, Pos(' ', TextIn) + 1, 255);
end
else
Exit;
end;
end;
var
TextIn:字符串;
人:弦;
工资:整数;
开始
尽管如此
开始
ReadLn(TextIn);//要求用户按Enter键
如果复制(文本输入,1,3)‘结束’,则
开始
人员:=复印件(文本输入,1,位置('',文本输入)-1);
工资:=STROTINT(复印件(文本输入,位置)('',文本输入)+1255);
结束
其他的
出口
结束;
结束;
我没有包括任何错误检查(应该在那里),因为您的原始代码也没有任何错误检查