如何实现数据定位读入?请求帮忙,谢谢大神们
我要读入的数据格式如下:2012-01-01 00:00:00 3.800000 12.00000
2012-01-01 00:10:00 3.900000 12.00000
2012-01-01 00:20:00 4.000000 12.00000
2012-01-01 00:30:00 4.100000 9.000000
读入要求是读入7,8列所在的数据,和后面的 00:30:00 4.100000 9.000000
我写的读入代码是
read(101,'(T8,T7,A2)',advance='no')time(i) !表示读取第七,八列的两个字符,并且不换行
write(102,*)time(i)
read(101,*,iostat=istat)date1(i),date(i),vel(i),angl(i) !继续读取剩下的数据,其中date1(i)为存取七,八列后面的数
write(102,*)date(i),vel(i),angl(i)
这样编写代码后读取数据会换行,第一行的00:00:00 3.800000 12.00000读不到,但是明明使用了advance='no'了,不知道为什么还是会换行
所以来请教一下。
你这到底是读 78 行,还是 78 列? 楚香饭 发表于 2015-3-8 17:24
你这到底是读 78 行,还是 78 列?
读7、8列的数据,read(101,'(T8,T7,A2)',advance='no')time(i),其中T是用来水平定位的,代码读取在输入缓冲区的第 7个~第8 个字符中的数值,那个写advance='no'为了是不换行继续读,但是实际是会换行,不知道问题是什么 问题解决了,可以分两次读入,虽然麻烦点但是这样就不冲突了, 本帖最后由 楚香饭 于 2015-3-8 22:20 编辑
Program www_fcode_cn
Implicit None
integer :: i
character(len=2) :: time(4)
character(len=10) :: date1(4) , date(4) , vel(4) , angl(4)
Open(12,File='t.txt')
Do i = 1 , 4
read(12,'(T7,A2)',advance='no') time(i)
read( 12 , * ) date1(i),date(i),vel(i),angl(i)
write(*,*) time(i) , date1(i),date(i),vel(i),angl(i)
End Do
End Program www_fcode_cn
这个代码读出的结果是:
1-01 00:00:003.80000012.00000
1-01 00:10:003.90000012.00000
1-01 00:20:004.00000012.00000
1-01 00:30:004.1000009.000000
不知是否符合你的想法?? 楚香饭 发表于 2015-3-8 22:14
Program www_fcode_cn
Implicit None
integer :: i
恩恩,完全满足,你这个方法更好些
页:
[1]