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中使用/
。