fro*_*hem 3 fortran trim gfortran fortran90
我有以下代码:
program main
character (len=15) :: abc = "te st tex t"
print *, trim(abc)
end program main
Run Code Online (Sandbox Code Playgroud)
哪些输出:
te st tex t
Run Code Online (Sandbox Code Playgroud)
我排除了所有要删除的空格,但事实并非如此。如何从字符串中删除所有空格?
Trim 只会删除边缘的空格,而不是中间的空格(这是几乎所有语言/库的常见行为)。如果要删除字符串中的所有空格,则必须创建自己的函数来执行此操作,并遍历字符串。
前任。:
program Test
implicit none
! Variables
character(len=200) :: string
! Body of Test
string = 'Hello World 7 9'
print *, string
call StripSpaces (string)
print *, string
contains
subroutine StripSpaces(string)
character(len=*) :: string
integer :: stringLen
integer :: last, actual
stringLen = len (string)
last = 1
actual = 1
do while (actual < stringLen)
if (string(last:last) == ' ') then
actual = actual + 1
string(last:last) = string(actual:actual)
string(actual:actual) = ' '
else
last = last + 1
if (actual < last) &
actual = last
endif
end do
end subroutine
end program Test
Run Code Online (Sandbox Code Playgroud)
这是在英特尔编译器上测试的,而不是在 gfortran 上测试的,但我认为它会起作用。