Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pascal 帕斯卡。单向列表。环_Pascal - Fatal编程技术网

Pascal 帕斯卡。单向列表。环

Pascal 帕斯卡。单向列表。环,pascal,Pascal,下面是一本书中的示例程序。如果不是eof循环,我无法停止。我试图在程序中插入crt;,const CheckEof:boolean=true,如果要在运行时按ctrl+Z,则它不起作用 Program P123; uses crt; {My insertion} type Adresacelula=^Celula; Celula=record Info:string; Urm: AdresaCelula; end; var P, Q, R: AdresaCelula; s

下面是一本书中的示例程序。如果不是eof循环,我无法停止。我试图在程序中插入crt;,const CheckEof:boolean=true,如果要在运行时按ctrl+Z,则它不起作用

Program P123;
uses crt; {My insertion}
type Adresacelula=^Celula;
   Celula=record
   Info:string;
   Urm: AdresaCelula;
   end;
var P, Q, R: AdresaCelula;
s:string;
i: integer;

const CheckEOF: boolean=true; {My insertion}

Procedure Create;

 begin
   p:=nil;
   write ('s='); readln (s);
   new (r); r^.Info:=s; r^.Urm:=nil;
   p:=r; q:=r;
   write ('s=');
       while not eof do {Here is the loop i need to stop}
        begin
          readln (s); write ('s=');
          new (r); r^.Info:=s; r^.Urm:=nil;
          q^.Urm:=r; q:=r;
        end;
end;
 Procedure Display;
   begin
    r:=p;
   while r<>nil do
       begin
        writeln (r^.Info);
        r:=r^.Urm;
       end;
     readln;
   end;

 begin
  Create;
  Display;
 end.

要使示例生效,请删除该行

常量CheckEOF:boolean=true;{我的插入}

并插入CheckEOF:=true;在创建之前;调用主程序。然后,当您按Ctrl-Z时,程序终止


当您可能要更改crt单元的CheckEOF时,您的代码声明了一个新变量CheckEOF。

EOF只有在连接到stdin的管道终止时才会变为真。您将需要另一种方法来执行此操作,除了标准DIN,除非您仅将其用于管道。Crt覆盖标准输入/输出,在这种情况下根本不应使用。f:=真;而f确实开始写“s=”;readlns;如果s='ENDENDEND123123^^^'则f:=false,否则开始新的r;r^.Info:=s;r^.Urm:=零;q^.Urm:=r;q:=r;终止终止但我认为这不是最好的解决办法