小编Rai*_*ohn的帖子

将不同长度的字符串传递给 Fortran 中的函数

我使用 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)

string fortran string-formatting subdirectory fortran90

3
推荐指数
1
解决办法
3663
查看次数