1. 程式人生 > 其它 >Lazarus研究--read和readln語句的坑

Lazarus研究--read和readln語句的坑

技術標籤:Lazaruslazarus

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好了。