Lazarus研究--read和readln語句的坑
阿新 • • 發佈:2020-12-20
Read和Readln語句能一次過讀入多個變數,但對數值和字串是不一樣。
下面一次性輸入三個整數
var
s1,s2,s3 : integer;
begin
write('input integer s1 ,s2 ,s3 :');
read(s1,s2,s3);
writeln('s1=',s1,' s2=',s2,' s3=');
end;
輸入時要注意,用空格、或TAB、或回車鍵分隔數值,只要你輸入足夠數量的數值,系統會正確讀入3個,多了不要,但不要輸入錯誤型別,如輸入字串,系統就會掛了。但如果你想一次性讀入三個字串,下面程式碼可行嗎?
var
s1,s2,s3 : string;
b1,b2,b3: integer;
begin
write('input s1 s2 s3 :');
read(s1,s2,s3);
writeln('s1=',s1,' s2=',s2,' s3=');
end;
這樣寫法是永遠讀不到三個字串的,無論你是用空格或TAB鍵分隔,永遠只能讀到 s1,s2和s3都是空串。要讀入三個字串,象下面這樣寫法也是不行的:
write('input string s1:'); read(s1); write('input string s2:'); read(s2); write('input string s3:'); read(s3); write('s1=', s1 , ' s2=',s2, ' s3=',s3);
第一個回車後,只能讀到S1,其他都是空的。下面是正確的寫法:
write('input string s1:');
readln(s1);
write('input string s2:');
readln(s2);
write('input string s3:');
readln(s3);
write('s1=', s1 , ' s2=',s2, ' s3=',s3);
字串就別多想了,老老實實的一個個讀,就用readln好了。