回 帖 发 新 帖 刷新版面

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

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

下面程序段读取系统时间,存入字符变量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个回复)

沙发

谢谢mltx先生的耐心指导!!!!这个转化方法好啊!!
我在程序中用的是system_clock,这个提取的也是系统时间吗?

板凳

我看了你的另一篇http://www.programfan.com/club/showbbs.asp?id=64521

3 楼

system_clock
是系统启动后运行的时间,time是生活中的时间。格式也不一样,是1/100或1/1000秒。生活时间是24小时计的。

4 楼

这个就是 Fortran 中的 Internal Files。

5 楼

请问mltx老师,write(now,"(2I1,1H:,I2,1H:,2I1)") 0,1,35,0,5 中的1H:是什么意思呢??

6 楼

1H: = 写一个字符“:”

7 楼


请问mltx老师
如果我有一个浮点数34.3400要转化为字符串“34.3400”,应该怎么转化,我按照您上面的方法怎么不行啊?

8 楼

character(len=8) :: string
write(string,'(f7.4)') 34.34
write(*,*) string
end

9 楼

增长见识啊,谢谢

10 楼


谢谢,讲的不错!

我来回复

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