Creating directory with name containing real number in FORTRAN

橙三吉。 提交于 2019-11-30 16:25:05

The argument of system needs to be a string. You therefore have to cast the real to a string and concatenate mkdir out/ with that string. Here is a quick example:

module dirs 
contains
  function dirname(number)
    real,intent(in)    :: number
    character(len=6)  :: dirname

    ! Cast the (rounded) number to string using 6 digits and
    ! leading zeros
    write (dirname, '(I6.6)')  nint(number)
    ! This is the same w/o leading zeros  
    !write (dirname, '(I6)')  nint(number)

    ! This is for one digit (no rounding)
    !write (dirname, '(F4.1)')  number
  end function
end module

program dirtest
  use dirs

  call system('mkdir -p out/' // adjustl(trim( dirname(1.) ) ) )
end program

Instead of call system(...) which is non-standard, you could use the Fortran 2008 statement execute_command_line (if your compiler supports it).

call execute_command_line ('mkdir -p out/' // adjustl(trim( dirname(1.) ) ) )
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!