2013-11-23 54 views
0

我在Cygwin中使用gfortran執行f90腳本,當我執行(運行)與./a的輸出時,它會留下一個空格,要求輸入而不打印提示(寫入)命令。Cygwin gfortran在寫入命令之前讀取

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 

這到底是怎麼回事?請幫忙。

+2

您需要提供,以便我們能夠幫助您的Fortran代碼。 – Johnsyweb

+0

我的直接假設是你在'write'或'print'之前有'read'。如果你想要更多的幫助,你必須實際做一些工作併發布你的代碼。 –

+0

上面包含實際代碼。非常感謝。 – rcho1114

回答

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