2014-06-17 95 views
0

文件讀取我讀整數的文件,每一個新行,像這樣:從帕斯卡

function arrayFromFile(nameFile : string) : pole; 
var 
    userFile : text; 
    d : data; 
    i : integer; 
    p : array; 
begin 
assign(userFile, nameFile); 
reset(userFile); 
i:=0; 
repeat 
    inc(i); 
    readln(userFile, d); 
    p[i]:=d; 
until eof(userFile); 
close(userFile); 
arrayFromFile:=p; 
end; 

我遍歷這樣的:

procedure writeArray(p : array); 
var 
    i : integer; 
begin 
i:=0; 
while p[i+1]<>0 do begin 
    inc(i); 
    writeln(p[i]); 
end; 
end; 

後來,當我做然後,如果A更長(有更多的線),它寫出一個罰款,但B突然有相同的長度,其餘的行是fil以A的整數領導!一個例子是here

你知道爲什麼以及如何避免這種行爲嗎?謝謝。

回答

1

沒有使用的全貌,這是很難說的,但是你讀出程序似乎並沒有保留的元素數量的軌道上讀,因爲它不保存的我的最終值

在寫入例程似乎假定值爲0的元素是數組的末尾。如果這是慣例,一般的「數組的結束」,也許

inc(i); 
p[i]:=0; 

直到讀出程序將解決你的問題(假設你的數組被大到足以容納的最大文件+1元。

+0

它解決了這個問題,謝謝。在Pascal中,數組中元素的默認值是什麼? – mirgee

+0

沒有默認值 –