while (not eof(inputFile)) do begin
new(newNode);
read(inputFile, newNode^.student.index);
read(inputFile, temp);
newNode^.student.forename := '';
read(inputFile, temp);
while (temp <> ' ') do begin
newNode^.student.forename:=newNode^.student.forename+temp; {And what does this +temp mean }
read(inputFile, temp);
end;
newNode^.student.surname:= '';
read(inputFile, temp);
while (temp <> ' ') do begin
有人可以向我解释一下
read(inputFile, temp)
为什么我们需要那个临时变量以及它用于什么?
temp:char;
Temp是一种字符类型,程序需要读取学生的姓名和姓氏。是行
read(temp)
多余?
答案 0 :(得分:2)
在您的代码中,temp: char;
用于一次保存一个字符,从文件中读取。由于名字和姓氏由文件中的空格分隔,因此您需要检测该空格,以便将读取的字符分配给学生记录的正确字段。
如果temp
被声明为,例如string
,整行(在索引之后)将被读入forename
字段。
阅读名字的注释细分如下:
newNode^.student.forename := ''; // clear the forename field
read(inputFile, temp); // read one character
while (temp <> ' ') do begin // while the read character is not a space
newNode^.student.forename:=newNode^.student.forename+temp; // concatenate with the field content
read(inputFile, temp); // read next character
end;
// continue with rest of code when a space after the forename is detected
我不明白你关于read(temp)
的最后一个问题。显示的代码中没有这样的行。如果你认为它是多余的,删除它,看看会发生什么。请务必了解如何在调试器中逐步执行代码。