Fortran Coder

查看: 1042|回复: 8
打印 上一主题 下一主题

[输入输出] 彭书上案例复现没成功

[复制链接]

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

楼主
发表于 2023-10-21 10:16:33 | 显示全部楼层
建议
read(fileid,"(5XI2,/,5XI3,6XI3,6XI3)",iostat=error)no,s
改为
read(fileid,*,iostat=error)no,s

然后文件内容改为:
1 30 50 20
2 13 15 25


1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2023-10-21 19:10:23 | 显示全部楼层
DDHH 发表于 2023-10-21 10:36
书上为啥操作不了呢?我听网友讲现在一个中文字体代表3个字节,所以5x这里有问题,可是我试了还是没有用 ...

因为格式化读取,对输入文件要求太苛刻,多一个空格,少一个空格都不行。
所以实践中,我几乎不会选择使用格式化读取。

能用 * 表控的,一律用表控。不能用表控的,我会尽可能想办法间接用表控。

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2023-10-21 19:19:36 | 显示全部楼层
DDHH 发表于 2023-10-21 10:36
书上为啥操作不了呢?我听网友讲现在一个中文字体代表3个字节,所以5x这里有问题,可是我试了还是没有用 ...

一个中文有几个字符,与具体的编码有关。并不是固定不变的。
建议不要用格式符读取,直接改用 * 表控格式。
read(fileid,"(5XI2,/,5XI3,6XI3,6XI3)",iostat=error)no,s
改为
character(len=1):: str !//这句放前面定义语句区域
read(fileid,*,iostat=error) str,no,str,s%chinese,str,s%english,str,s%math


文件内容就可以比较自由(空格数量可以不固定,大于等于1个空格即可,座号冒号:之间不能用空格)
座号:  1
中文:  1  英文:  2  数学:  3

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-14 21:08

Powered by Tencent X3.4

© 2013-2024 Tencent

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