我使用 Fortran 90 和 gfortran 编译器作为 cygwin 的一部分。我想编写一个函数,该函数将在一个目录中创建一系列新文件夹,该目录也作为参数传递,并附带一个数字,该数字是新的连续编号文件夹的最大数量。由于我必须声明字符(即字符串)的长度,但也希望普遍能够传递不同的路径,因此我尝试将修剪后的字符串传递给函数。
program main
implicit none
character(len = 6) :: newdir
character(len = 27) :: path
newdir = "neu1A"
path = "c:/users/i/desktop/rainer"
print*,len_trim(path) !Outputs the correct length of 25
print*,len_trim(newdir) !Outputs the correct length of 5
call newdirec(trim(newdir),trim(path),5)
end program main
Run Code Online (Sandbox Code Playgroud)
但由于我必须在函数中重新声明参数,因此它们的长度在此过程中被覆盖/丢失。如何使用正确的字符串长度并保持函数的通用性?我必须使用长度,因为构建调用系统来创建目录的字符串需要格式化字符串。我使用 Fortran 90,因此一些选项不可用。
function newdirec(newdir,path, foldnum)
character (len = 27) :: path
character (len = 50) :: newdir
character (len = (len_trim(path) + len_trim(newdir))) :: newpath
character (len = 100) :: format_string, newdir_len_str, …Run Code Online (Sandbox Code Playgroud)