Fortran Coder

标题: 字符串连接不了?大佬们帮忙看看是啥问题 [打印本页]

作者: 芥子纳须弥    时间: 2021-12-13 15:53
标题: 字符串连接不了?大佬们帮忙看看是啥问题
[Fortran] 纯文本查看 复制代码
!=====================================
!        整型或实型转换生字符,借助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输出不来?

结果.jpg (18.11 KB, 下载次数: 135)

结果.jpg

作者: Transpose    时间: 2021-12-13 21:26
[Fortran] 纯文本查看 复制代码
CID = trim(bb)//trim(aa)//trim(cc)

字符串本身长度是40,会在后面加一些空格,把空格去掉就行了
作者: fcode    时间: 2021-12-14 08:36
看看,字符串的故事:
http://string.w.fcode.cn/
如果你嫌每次都trim很麻烦,那么递延长度字符串,可能对你有帮助
http://diyanzifuchuan.w.fcode.cn/

作者: 芥子纳须弥    时间: 2021-12-17 17:26
Transpose 发表于 2021-12-13 21:26
字符串本身长度是40,会在后 ...

是这样,谢谢
作者: 愤怒的三炮    时间: 2021-12-24 09:28
fcode 发表于 2021-12-14 08:36
看看,字符串的故事:
http://string.w.fcode.cn/
如果你嫌每次都trim很麻烦,那么递延长度字符串,可能对 ...

雪球你推荐的文章太好了,但里面有一句话可能有歧义:
“此时我们就需要 AdjustL 函数,我们可以这样写: trim(AdjustL(s4)) , 或者 AdjustL(trim(s4)) 这两者的顺序无所谓,结果都是一样的。”
两者的结果好像并不一样:
[Fortran] 纯文本查看 复制代码
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
感谢提醒,这里的确有些不严谨




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2