phost 发表于 2018-9-26 10:29:22

求助文件读写

一个文件有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:28

101 format(a10,1x,a12,2(1x,e15.7),1x,e16.7,1x,e15.7)
更好改为:

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:20

谢谢,知道了,原来是这个问题啊。

vvt 发表于 2018-9-26 20:35:02

这样可以更简洁
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:03

湊個熱鬧

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
    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 解釋
页: [1]
查看完整版本: 求助文件读写