如何从Pascal中的文本文件读取特定行

时间:2020-10-27 14:32:15

标签: pascal

因此,我正在编写一个程序,用户在其中输入一些行并将其保存在文件中,然后我们可以选择他写的行来对其进行加密。 表示他将输入一个数字,比方说2指的是文本文件中的第2行。 问题是,如何从文本文件中获取特定行? 搜索显然不适用于文本文件!

Procedure cryptProcess( Var msgFile, cryptFile : Text; N : Integer);
Var
  pNumber : Integer;
Begin
  Writeln('Select a phrase to crypt [Number : ',N,'] : ');
  Readln( pNumber );
  Reset( msgFile );
  For i:= 1 To N Do
    Begin
      If ( i = pNumber ) Then
        Begin
          Readln( msgFile, tempVar2 );
          Writeln( i );
          Writeln( tempVar2 );
        End;
    End;
  Close( msgFile );
End;

1 个答案:

答案 0 :(得分:1)

Pascal只能顺序处理文本文件-为了从文本文件中读取和使用行 n ,您必须读取(并可能丢弃)行1至< em> n -1.除非用户碰巧请求第一行,否则您现有的代码实际上不会从文件中读取文本。

您想要做的是替换

  For i:= 1 To N Do
    Begin
      If ( i = pNumber ) Then
        Begin
          Readln( msgFile, tempVar2 );
          Writeln( i );
          Writeln( tempVar2 );
        End;
    End;

使用

    For i:= 1 To pNumber Do
      ReadLn(msgFile, tempVar2);
    WriteLn(pNumber);
    WriteLn(tempVar2);

这会从文件中读取前pNumber行-也就是说,它会读取所需的行,而不会继续读取-然后打印数字和行。

相关问题