Fortran Coder

查看: 130|回复: 4

[文件读写] 求助文件读写

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
13 元
贡献
6 点
发表于 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
这个是什么问题,怎么修改啊?谢谢。
回复

使用道具 举报

285

帖子

1

主题

0

精华

宗师

F 币
1572 元
贡献
1053 点
发表于 2018-9-26 12:59:28 | 显示全部楼层
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

2

帖子

1

主题

0

精华

新人

F 币
13 元
贡献
6 点
 楼主| 发表于 2018-9-26 14:53:20 | 显示全部楼层
谢谢,知道了,原来是这个问题啊。

618

帖子

0

主题

0

精华

大师

F 币
614 元
贡献
378 点

规矩勋章元老勋章新人勋章水王勋章

QQ
发表于 2018-9-26 20:35:02 | 显示全部楼层
这样可以更简洁
[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

91

帖子

3

主题

0

精华

版主

F 币
452 元
贡献
276 点

贡献勋章管理勋章帅哥勋章元老勋章星光勋章规矩勋章

发表于 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
   
[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 解釋
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2018-12-17 11:27

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表