芥子纳须弥 发表于 2021-12-13 15:53:31

字符串连接不了?大佬们帮忙看看是啥问题

!=====================================
!      整型或实型转换生字符,借助Fortran内部文件完成,
!      即将一个字符串变量当作一个内部文件看待;反之依然
!=====================================
    program main
   implicit none
   character(len=40) :: aa,bb,cc='2007.00',CID
   integer(kind=4) :: a

!...数字转换成字符串
   a=2007
   aa="2007"
   !...整型转字符
   write(bb,"(I4)") a   !...a -> bb
   CID = bb//aa//cc
   write(*,*) TRIM(ADJUSTL(CID))

   stop
   end program main

结果只有bb输出来了,后面的aa和cc输出不来?

Transpose 发表于 2021-12-13 21:26:36

CID = trim(bb)//trim(aa)//trim(cc)
字符串本身长度是40,会在后面加一些空格,把空格去掉就行了

fcode 发表于 2021-12-14 08:36:08

看看,字符串的故事:
http://string.w.fcode.cn/
如果你嫌每次都trim很麻烦,那么递延长度字符串,可能对你有帮助
http://diyanzifuchuan.w.fcode.cn/

芥子纳须弥 发表于 2021-12-17 17:26:34

Transpose 发表于 2021-12-13 21:26
字符串本身长度是40,会在后 ...

是这样,谢谢

愤怒的三炮 发表于 2021-12-24 09:28:00

fcode 发表于 2021-12-14 08:36
看看,字符串的故事:
http://string.w.fcode.cn/
如果你嫌每次都trim很麻烦,那么递延长度字符串,可能对 ...

雪球你推荐的文章太好了,但里面有一句话可能有歧义:
“此时我们就需要 AdjustL 函数,我们可以这样写: trim(AdjustL(s4)) , 或者 AdjustL(trim(s4)) 这两者的顺序无所谓,结果都是一样的。”
两者的结果好像并不一样:
character(len=12):: domain

open(123,file='output.txt')

domain = 'fcode.cn' ! 10 characters with 2 spaces ahead
write(123, *) 'adjustl(trim(domain)):',adjustl(trim(domain))
write(123, *) 'trim(adjustl(domain)):',trim(adjustl(domain))

print*,'length of adjustl(trim(domain)) is' ,len(adjustl(trim(domain)))
print*,'length of trim(adjustl(domain)) is',len(trim(adjustl(domain)))
end

fcode 发表于 2021-12-27 08:30:53

感谢提醒,这里的确有些不严谨
页: [1]
查看完整版本: 字符串连接不了?大佬们帮忙看看是啥问题