Cygwin gfortran在写入命令之前读取

时间:2013-11-23 03:00:17

标签: cygwin fortran gfortran

我正在使用gfortran在Cygwin中执行f90脚本,当我用./a执行(运行)输出时,它会留下一个空格,要求输入而不打印提示(写入)命令。

  program circle
  real r, area
  write (*,*) 'Give radius r:'
  read  (*,*) r
  area = 3.14159*r*r
  write (*,*) 'Area = ', area

  stop
  end

$ gfortran circle.f    
$ ./a  
    1  
      Give radius r:  
     Area =    3.1415901

假设是

$ ./a
 Give radius r:
1
 Area =    3.1415901

这里发生了什么?请帮忙。

1 个答案:

答案 0 :(得分:0)

如果您的编译器支持Fortran 2003,您可以使用flush语句:

program circle
  use, intrinsic :: iso_fortran_env, only: stdin=>input_unit, &
                                           stdout=>output_unit, &
                                           stderr=>error_unit
  implicit none
  real :: r, area

  write (stdout,*) 'Give radius r:'
  flush(stdout)
  read  (stdin,*) r
  area = 3.14159*r*r
  write (stdout,*) 'Area = ', area

end program