回 帖 发 新 帖 刷新版面

主题:[原创]字符和数值之间的转换

最简单的方法是用内部文件,即用字符变量作为文件。

下面程序段读取系统时间,存入字符变量now,再将now的时分秒转换为整数值读出。

program TimeNow
   character*8 :: now
   integer     :: hh,mm,ss

   call time (now)     ! 读系统时间
   write(*,*) now      ! 写出时间字符串

   ! 用字符变量now作为内部文件,从中将时、分、秒作为整数读出
   read(now,"(I2,1x,I2,1x,I2)") hh,mm,ss  ! 字符转换为
   write(*,*) hh,mm,ss ! 写出时、分、秒的整数值

   stop
end program TimeNow

屏幕输出例:
01:35:05
1 35 5


数值转换为字符是类似的,用写语句即可:
   write(now,"(2I1,1H:,I2,1H:,2I1)") 0,1,35,0,5

回复列表 (共39个回复)

31 楼

字符串转化
好帖留名
方便寻找

32 楼

谢谢mltx大叔了,很长见识哦

33 楼

这种转换是可以实现的,我想请教一下,如果在一个计算中需要有待定系数出现 进而来求这个待定系数,那么在初始定义的时候算式中就要出现未赋值的量,可是实际中此时无法计算,会提示某某变量未赋值即采用,这是该怎么处理呢?
理想化 希望能像matlab那样定义一个字符变量参与运算,fortran中怎么处理呢?谢谢!

34 楼

这个方法真方便!谢谢!

35 楼

a1

36 楼


请问字符串可以作为浮点数来用吗?
比如“nan”
谢谢了啊!!!

37 楼


mltx老师,请教您一个问题!
我一个.dat文件中存着一个915*1080的矩阵,里面既有数据,又有字符串。但都是占十个字符空间。我想差分成305*360的矩阵,写到另一个.dat文件中,请问如何处理字符串的,字符串是“       NaN”,数据是比如“     3.076”  “    -3.689”之类的数据。
我想读到一个数组里a(915,1080),然后在提取出b(305,360)
但是在fortran中数组元素只能是数值型的啊,不能是字符串!
该怎么处理啊!
谢谢了~~~

38 楼


character(len=3) :: string
write(string,'(i3.3)') 3
write(*,*) string 
end

39 楼

我以前一直都是写入一个文件,然后把它当成字符读出来。
呵呵,笨是笨了点。

我来回复

您尚未登录,请登录后再回复。点此登录或注册