我正在学习如何使用pascal从文本文件中读取整数。该程序应该读取和打印10个整数,但它实际上打印了11个值,它最后打印了0个。我在编写c ++程序时遇到了同样的问题,但是我使用while(inFile >> num)
而不是while(!EOF{infile >> num;}
解决了这个问题。
这是我的程序的pascal代码:
program testRead;
uses crt;
var
nSize : integer;
num, sum : longint;
root : real;
f : text;
begin
assign(f, 'numbers.txt');
reset(f);
nSize := 0;
while not eof(f) do
begin
read(f, num);
writeln(num);
end;
close(f);
end.
答案 0 :(得分:0)
首先,文件显然在最后一行之后还有一个Carriage Return, Line feed
(CRLF
)对,这没关系,但是如果没有一个,你就不会看到问题
您需要知道可以使用read()
或readln()
读取标准输入或文件。 read()
不会从行尾删除CRLF
,这意味着当您从文件中读取最后一个数字时,eof
(文件末尾)实际上不是真的。
要更正您的计划,请使用readln()
代替read()
您可以详细了解read()
和readln()
here