回 帖 发 新 帖 刷新版面

主题:文件类型问题

下题在显示器上输出时,总会死循环,请问是什么原因
(从键盘输入一段正文,将它复制到指定的磁盘文件中,然后再在显示器上输出。)
program p9_1(input,output);
  var ch:char; str1:string[15];
      file1:text;
  begin
    write('please input a file name:');
    readln(str1);
    assign(file1,str1);
    rewrite(file1);
    while not eof do
      begin
        while not eoln do
          begin
            read(ch);
            write(file1,ch);
          end;
        readln;
       writeln(file1);
      end;
    close(file1);
    writeln;
    reset(file1);
    while not eof(file1) do
      begin
        while not eoln(file1) do
          begin
            read(file1,ch);
            write(ch:3);
          end;
        readln;
        writeln;
      end;
    close(file1);
  end.

回复列表 (共3个回复)

沙发

写文件时用的eof好像是读文件用的,没见过在显示器上怎么用。
用一个符号(比如#)或当readkey=27(用crt单元输入esc)时退出。

板凳

你需注意几个问题:
  1:reset(文件名);--->为读操作做准备;
     rewrite(文件名);--->为写操作做准备.
  2:eof,eoln是两个布尔函数,后面都需加文件名;
参考程序如下:
program p9_1(input,output);
  var ch:char;
      str1:string[15];
      file1:text;
  begin
    write('please input a file name:');
    read(str1);
    assign(file1,str1);
    reset(file1);
    while not eof(file1) do
    begin
      while not eoln(file1) do
      begin
        read(file1,ch);
        write(ch);
      end;
      writeln;
      readln(file1);
    end;
    close(file1);
  end.

3 楼

对于标准输入输出(即input和output)只能够使用while eoln 不能使用 while eof。
解决的办法是定义在最后输入某一行特定的文字(例如end)后结束。

我来回复

您尚未登录,请登录后再回复。点此登录或注册