在FORTRAN中如何在同一行上编写代码

10

在Fortran中,每次使用WRITE都会产生一行新的内容。为了控制正在执行的程序的工作,我想在屏幕上写出变量当前的值,但始终在同一行上(擦除先前的值并从行的开头开始)。也就是说,类似于:

 1    CONTINUE
      "update the value of a"
      WRITE(*,*) a
      BACKSPACE "screen"
      GOTO 1

WRITE(*,*,ADVANCE='NO') 这样的语句(无论如何都是错误的)并不是我需要的:这将把所有的a值都写在一条非常长的行上。


相当确信 BACKSPACE 不会做你认为它会做的事情。 - Kyle Kanos
1个回答

9
我展示给你一个关于你所需要的技巧,如下所示。
do l=1,lmax
   ...update a...
   write(*,'(1a1,<type>,$)') char(13), a
enddo

其中<type>a的格式说明符(例如, 整数使用i0)。

关键在于char(13),它是回车符,以及格式说明符中的$。我真的不知道$有没有名字,我只知道它可以在屏幕上显示--如果输出到文件,则每行都会出现a


请注意,$ 描述符不是标准语言。 - IanH
我认为这不是标准的,但在我的ifort 11+和gfortran 4.6&4.7中可以使用。 - Kyle Kanos
1
advance=no 是 "$" 的“标准”替代品。此外,解决方案取决于您的终端类型,如果此答案无效,请返回并告诉我们您正在运行的终端。 - agentp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接