在fortran中,如何提取字符数组中每个字符串的前两位

2025-02-23 18:45:11
推荐回答(3个)
回答1:

program abc123
implicit none
character(len=10)::a(5)=(/"afdfdfsd","asfdsfgdg","gfgergdfd","fwegsddfd","fdsgergfs"/)  !需要提取字符串的数组
character(len=2)::b(5)
character(len=10)::x
integer::i
do i=1,5
x=a(i)
b(i)=x(1:2)  !提取前两位
end do
do i=1,5
write(*,*)b(i)
enddo

stop
end

结果是

回答2:

在Fortran语言里,如果一串字符存储在变量A中,那么取出A中的第i至j段的子字符串,写成A(i:j).  比如你的例子,

program main
implicit none
character*10  a(2,2)
integer  i, j

  a = reshape( (/'2010', '2012', '2013', '2014'/),(/2,2/))
  
  do i = 1, 2
    print *, (a(i,j),j=1,2)
  end do
  print *, ''

  do i = 1, 2
    do j = 1, 2
      print *, a(i,j)(1:2)
    end do
  end do
  
end program main

以上.

回答3:

在Fortran语言里,如果一串字符存储在变量A中,那么取出A中的第i至j段的子字符串,写成A(i:j). 比如你的例子