如何删除fortran

时间:2018-09-16 09:37:08

标签: fortran gfortran

我从文件中读取数据并解析它们以存储在某些变量中。数据如下所示写入文件中,

INT_VALUE           =                   17 # Valid Integer
INT_VALUE1                              23
INT_VALUE2          =                   00012
INT_VALUE3                             -2
INT_VALUE4                             -33

在某些地方有空格,在其他一些地方有'='。在读取时,我得到的流%val带有'=',而我的值是' = 17',我需要删除=以及'='符号和第一个数字之间的空格并存储为有效数字。

在其他情况下,数字之间可能会有空格,这应该是错误的。

无效值将是带有特殊字符的任何非整数/实数值。例如,

INT_VALUE13                            34=5434
INT_VALUE14                            -23 45-33
INT_VALUE15         =                  23-45*665Rtre
INT_VALUE16                            -23.4
INT_VALUE17                            1.4E9r23
INT_VALUE18                            -5.D-3.3
INT_VALUE19                            233 ddf
INT_VALUE20                            -87 dfsdf
INT_VALUE21         =                  rtmr,t23./

如何删除fortran中的空格?

我的功能是

character(60) function sweep_blanks(in_str)
    character(*), intent(in) :: in_str
    character(60) :: out_str
    character :: ch
    integer :: j
    out_str = " "
    do j=1, len_trim(in_str)
        ch = in_str(j:j)
        if (ch .ne. " ") then
            out_str = trim(out_str) // ch
        endif
        sweep_blanks = out_str
    end do
end function sweep_blanks

这会删除所有空格,无论是在中间,结尾还是开头都无济于事。

1 个答案:

答案 0 :(得分:1)

您可以使用两个功能indexadjustl来做到这一点。

  • index查找字符串中子字符串的位置;
  • adjustl使前导空白与尾随空白。

    整数idx idx = INDEX(instring,'=')+ 1 outstring = ADJUSTL(instring(idx:))

所以,给定输入字符串

instring = ' =        17'

index的结果将是2,并赋予idx3instring(3:)的值为' 17'adjustl'从中返回'17 '

给出输入字符串

instring = '                    -33'

没有'='的index结果将是0