我需要一个可移植函数/子程序来定位字符串中最后一个非空白字符的位置。我找到了两个选项: LEN_TRIM
和LNBLNK
. 但是,不同的编译器似乎有不同的标准。以下编译器的官方文档表明 LEN_TRIM 是以下平台上 Fortran 95 标准的一部分:
但是,在 F95 标准之前发布的编译器似乎没有任何保证。 我的经验是,较旧的编译器可能会指定一个LEN_TRIM
或LNBLNK
,但不一定同时指定两者。我的解决方案是使用预处理器条件:
#ifdef USE_LEN_TRIM
iNameLen = LEN_TRIM(cabase)
iExtLen = LEN_TRIM(caext)
#else
iNameLen = LNBLNK(cabase)
iExtLen = LNBLNK(caext)
#endif
然后传递-DUSE_LEN_TRIM
给预处理器。但是,我不是预处理器条件和额外编译时标志的忠实粉丝。 您对定位字符串中最后一个非空白字符的位置的可移植(在 Fortran 95 标准之前)函数有什么建议吗?