关于阅读文件

时间:2018-02-02 00:23:48

标签: pascal freepascal

  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) 
多余?

1 个答案:

答案 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)的最后一个问题。显示的代码中没有这样的行。如果你认为它是多余的,删除它,看看会发生什么。请务必了解如何在调试器中逐步执行代码。