Directory 如何从Force Fortran 2.0创建新目录

Directory 如何从Force Fortran 2.0创建新目录,directory,fortran,create-directory,Directory,Fortran,Create Directory,我需要从代码中创建一个新目录,以便能够向其中写入数据文件 我正在使用Windows 8中的Force Fortran 2.0,我还想知道,由于前/后斜杠问题,这种语法是否会因操作系统的不同而有所不同。Force Fortran使用较旧的编译器(g77,g95,gfortran[未知版本]),因此我将为系统提供一个解决方案。对于支持它的编译器,最好使用标准 您只需使用Windows和Unix计算机上的mkdir。默认情况下,mkdir在Windows上创建文件夹和(不存在的)父文件夹。这必须在Un

我需要从代码中创建一个新目录,以便能够向其中写入数据文件


我正在使用Windows 8中的Force Fortran 2.0,我还想知道,由于前/后斜杠问题,这种语法是否会因操作系统的不同而有所不同。

Force Fortran使用较旧的编译器(
g77
g95
gfortran
[未知版本]),因此我将为
系统
提供一个解决方案。对于支持它的编译器,最好使用标准

您只需使用Windows和Unix计算机上的
mkdir
。默认情况下,
mkdir
在Windows上创建文件夹和(不存在的)父文件夹。这必须在Unix上明确给出(
-p
)。使用
system
可以从Fortran执行此操作:

program test
  implicit none
#ifdef _WIN32
  character(len=*),parameter :: MKDIR = 'mkdir '
  !                                           ^
  !                    The blank is intentional! 
#else
  character(len=*),parameter :: MKDIR = 'mkdir -p '
  !                                              ^
  !                       The blank is intentional! 
#endif
  integer :: stat

  stat = system( MKDIR // 'testFolder' )
  if ( stat /= 0 ) then
    print *, 'mkdir: failed to create folder! '
  endif
end program
您仍然需要创建一个处理正确文件夹分隔符的例程,下面是一个快速脏示例:

module conv_mod
contains
  function conv2win(str) result(res)
    implicit none
    character(len=*),intent(in) :: str
    character(len=len(str))     :: res
    integer                     :: i

    res = str
    do i=1,len(res)
      if ( res(i:i) == '/' ) res(i:i) = '\'
    enddo ! i
  end function

  function conv2unix(str) result(res)
    implicit none
    character(len=*),intent(in) :: str
    character(len=len(str))     :: res
    integer                     :: i

    res = str
    do i=1,len(res)
      if ( res(i:i) == '\' ) res(i:i) = '/'
    enddo ! i
  end function
end module

program conv
  use conv_mod
  print *,conv2win('some/path')
  print *,conv2win('some\path')
  print *,conv2unix('some\path')
end program

不过,这并不能解决像
C:\
这样的问题。。。正如@VladimirF所指出的,您也可以在Windows中使用
/
。在Unix中,仍然需要将反斜杠转换为
/

Force-Fortran使用较旧的编译器(
g77
g95
gfortran
[未知版本]),因此我将介绍一个使用
系统的解决方案。对于支持它的编译器,最好使用标准

您只需使用Windows和Unix计算机上的
mkdir
。默认情况下,
mkdir
在Windows上创建文件夹和(不存在的)父文件夹。这必须在Unix上明确给出(
-p
)。使用
system
可以从Fortran执行此操作:

program test
  implicit none
#ifdef _WIN32
  character(len=*),parameter :: MKDIR = 'mkdir '
  !                                           ^
  !                    The blank is intentional! 
#else
  character(len=*),parameter :: MKDIR = 'mkdir -p '
  !                                              ^
  !                       The blank is intentional! 
#endif
  integer :: stat

  stat = system( MKDIR // 'testFolder' )
  if ( stat /= 0 ) then
    print *, 'mkdir: failed to create folder! '
  endif
end program
您仍然需要创建一个处理正确文件夹分隔符的例程,下面是一个快速脏示例:

module conv_mod
contains
  function conv2win(str) result(res)
    implicit none
    character(len=*),intent(in) :: str
    character(len=len(str))     :: res
    integer                     :: i

    res = str
    do i=1,len(res)
      if ( res(i:i) == '/' ) res(i:i) = '\'
    enddo ! i
  end function

  function conv2unix(str) result(res)
    implicit none
    character(len=*),intent(in) :: str
    character(len=len(str))     :: res
    integer                     :: i

    res = str
    do i=1,len(res)
      if ( res(i:i) == '\' ) res(i:i) = '/'
    enddo ! i
  end function
end module

program conv
  use conv_mod
  print *,conv2win('some/path')
  print *,conv2win('some\path')
  print *,conv2unix('some\path')
end program

不过,这并不能解决像
C:\
这样的问题。。。正如@VladimirF所指出的,您也可以在Windows中使用
/
。在Unix中,仍然需要将反斜杠转换为
/

Force-Fortran使用较旧的编译器(
g77
g95
gfortran
[未知版本]),因此我将介绍一个使用
系统的解决方案。对于支持它的编译器,最好使用标准

您只需使用Windows和Unix计算机上的
mkdir
。默认情况下,
mkdir
在Windows上创建文件夹和(不存在的)父文件夹。这必须在Unix上明确给出(
-p
)。使用
system
可以从Fortran执行此操作:

program test
  implicit none
#ifdef _WIN32
  character(len=*),parameter :: MKDIR = 'mkdir '
  !                                           ^
  !                    The blank is intentional! 
#else
  character(len=*),parameter :: MKDIR = 'mkdir -p '
  !                                              ^
  !                       The blank is intentional! 
#endif
  integer :: stat

  stat = system( MKDIR // 'testFolder' )
  if ( stat /= 0 ) then
    print *, 'mkdir: failed to create folder! '
  endif
end program
您仍然需要创建一个处理正确文件夹分隔符的例程,下面是一个快速脏示例:

module conv_mod
contains
  function conv2win(str) result(res)
    implicit none
    character(len=*),intent(in) :: str
    character(len=len(str))     :: res
    integer                     :: i

    res = str
    do i=1,len(res)
      if ( res(i:i) == '/' ) res(i:i) = '\'
    enddo ! i
  end function

  function conv2unix(str) result(res)
    implicit none
    character(len=*),intent(in) :: str
    character(len=len(str))     :: res
    integer                     :: i

    res = str
    do i=1,len(res)
      if ( res(i:i) == '\' ) res(i:i) = '/'
    enddo ! i
  end function
end module

program conv
  use conv_mod
  print *,conv2win('some/path')
  print *,conv2win('some\path')
  print *,conv2unix('some\path')
end program

不过,这并不能解决像
C:\
这样的问题。。。正如@VladimirF所指出的,您也可以在Windows中使用
/
。在Unix中,仍然需要将反斜杠转换为
/

Force-Fortran使用较旧的编译器(
g77
g95
gfortran
[未知版本]),因此我将介绍一个使用
系统的解决方案。对于支持它的编译器,最好使用标准

您只需使用Windows和Unix计算机上的
mkdir
。默认情况下,
mkdir
在Windows上创建文件夹和(不存在的)父文件夹。这必须在Unix上明确给出(
-p
)。使用
system
可以从Fortran执行此操作:

program test
  implicit none
#ifdef _WIN32
  character(len=*),parameter :: MKDIR = 'mkdir '
  !                                           ^
  !                    The blank is intentional! 
#else
  character(len=*),parameter :: MKDIR = 'mkdir -p '
  !                                              ^
  !                       The blank is intentional! 
#endif
  integer :: stat

  stat = system( MKDIR // 'testFolder' )
  if ( stat /= 0 ) then
    print *, 'mkdir: failed to create folder! '
  endif
end program
您仍然需要创建一个处理正确文件夹分隔符的例程,下面是一个快速脏示例:

module conv_mod
contains
  function conv2win(str) result(res)
    implicit none
    character(len=*),intent(in) :: str
    character(len=len(str))     :: res
    integer                     :: i

    res = str
    do i=1,len(res)
      if ( res(i:i) == '/' ) res(i:i) = '\'
    enddo ! i
  end function

  function conv2unix(str) result(res)
    implicit none
    character(len=*),intent(in) :: str
    character(len=len(str))     :: res
    integer                     :: i

    res = str
    do i=1,len(res)
      if ( res(i:i) == '\' ) res(i:i) = '/'
    enddo ! i
  end function
end module

program conv
  use conv_mod
  print *,conv2win('some/path')
  print *,conv2win('some\path')
  print *,conv2unix('some\path')
end program

不过,这并不能解决像
C:\
这样的问题。。。正如@VladimirF所指出的,您也可以在Windows中使用
/
。在Unix中,仍然需要将反斜杠转换为
/

您也可以在Windows中使用
/
。您也可以在Windows中使用
/
。您也可以在Windows中使用
/
。您也可以在Windows中使用
/