Fortran Coder
标题: 求助文件读写 [打印本页]
作者: phost 时间: 2018-9-26 10:29
标题: 求助文件读写
一个文件有n行
基本格式是:
06/06/2018 15:00:10.000 1.3683691E+0001 2.4744379E+0001 -1.7999999E-0002 4.9999999E-0003
我用read(3,101) a,b,c,d,e,f
101 format(a10,1x,a12,4(1x,e15.7))
前4个数据是正确的,可是后面的2个数据变成-1.8 和5.0
这个是什么问题,怎么修改啊?谢谢。
作者: li913 时间: 2018-9-26 12:59
101 format(a10,1x,a12,2(1x,e15.7),1x,e16.7,1x,e15.7)
更好改为:
[Fortran] 纯文本查看 复制代码
character(100) str,a,b
real c,d,e,f
read(3,"(a)") str
a = str(1:10)
b = str(12:23)
read(str(24:),*) c,d,e,f
write(*,*) trim(a),' ',trim(b)
write(*,*) c,d,e,f
pause
end
作者: phost 时间: 2018-9-26 14:53
谢谢,知道了,原来是这个问题啊。
作者: vvt 时间: 2018-9-26 20:35
这样可以更简洁
[Fortran] 纯文本查看 复制代码
character(100) str,a,b
real c,d,e,f
read(3,"(a10,a100)") a,str
read(str,*) b,c,d,e,f
write(*,*) trim(a),' ',trim(b)
write(*,*) c,d,e,f
作者: chiangtp 时间: 2018-9-26 22:34
湊個熱鬧
1. for READ (尤其是 numeric data), 用 list direct (free) format 保證不會讀錯, 用 formatted format 就不保證
2. 如果 data entry-line, character data 為 "..." or '...' (加delimiters單雙引號)
"06/06/2018" "15:00:10.000" 1.3683691E+0001 2.4744379E+0001 -1.7999999E-0002 4.9999999E-0003
[Fortran] 纯文本查看 复制代码
CHARACTER(80) :: a, b
REAL :: c, d, e, f
READ(11,*) a, b, c, d, e, f ! list-direct-format to read all data
3. 補充 vvt 的回覆:
for list-direct format, data entry line 的 "/" (slash) 符號, 語法上 不是 data, 而是 control-code 作 ending reading 解釋
欢迎光临 Fortran Coder (http://bbs.fcode.cn/) |
Powered by Discuz! X3.2 |