Fortran Coder

查看: 1244|回复: 5

[文件读写] 用fortran读取txt文件,只要txt文件里有回车,就会运行失败

[复制链接]

3

帖子

1

主题

0

精华

新人

F 币
20 元
贡献
10 点
发表于 2021-7-2 22:36:37 | 显示全部楼层 |阅读模式
代码如下
DO nSource=1,SourceNumber(1)
        READ(UNIT=10,FMT=*) SourcePositionOfMain(nSource,1),SourcePositionOfMain(nSource,2),SourcePositionOfMain(nSource,3),SourcePositionOfMain(nSource,4),SourcePositionOfMain(nSource,5),SourcePositionOfMain(nSource,6)
    END DO

txt文件是别人的,别人也用了回车符,但是如果是我自己输入回车,就会报错。
3.png
这是txt文件,只有一行的时候可以,然后回车运行就会出问题
1.png
错误是list-directed I/O syntax error,我查了一下是输入数据不正确。例如从文件或字符串中读取整型或浮点数数据,而遇到非数字的符号,比如“abc”
但是我只是输入了一个回车符,我试验过了,就是回车符的问题
很疑惑,求解答,谢谢!
回复

使用道具 举报

1622

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1972 元
贡献
1249 点

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

发表于 2021-7-4 09:47:08 | 显示全部楼层
DO nSource=1,SourceNumber(1)
        READ(UNIT=10,FMT=*) SourcePositionOfMain(nSource,1),SourcePositionOfMain(nSource,2),SourcePositionOfMain(nSource,3),SourcePositionOfMain(nSource,4),SourcePositionOfMain(nSource,5),SourcePositionOfMain(nSource,6)
    END DO

可简写为
   DO nSource=1,SourceNumber(1)
        READ(UNIT=10,FMT=*) SourcePositionOfMain(nSource,1:6)
    END DO


请给出你的 txt 的文件内容。

3

帖子

1

主题

0

精华

新人

F 币
20 元
贡献
10 点
 楼主| 发表于 2021-7-5 23:04:37 | 显示全部楼层
fcode 发表于 2021-7-4 09:47
DO nSource=1,SourceNumber(1)
        READ(UNIT=10,FMT=*) SourcePositionOfMain(nSource,1),SourcePosit ...

txt文件内容我已经贴出来了,就在上面主贴,我不会在回复里贴图,回复贴图要用链接,麻烦您看一眼主楼

1622

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1972 元
贡献
1249 点

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

发表于 2021-7-6 19:10:52 | 显示全部楼层


这张图里,第一行的内容,也是文件的内容吗?
SourcePositionOfMain(SUM(SourceNumber(1:3))+1:SUM(SourceNumber(1:4)),6)

如果是,你的代码里,是否有语句读取或跳过这一行?

3

帖子

1

主题

0

精华

新人

F 币
20 元
贡献
10 点
 楼主| 发表于 2021-7-8 22:16:02 | 显示全部楼层
fcode 发表于 2021-7-6 19:10
这张图里,第一行的内容,也是文件的内容吗?
SourcePositionOfMain(SUM(SourceNumber(1:3))+1:SUM(Sourc ...

有的
READ(UNIT=10,FMT="(A200)") ParemeterCardTemp
    DO nSource=1,SourceNumber(1)
        READ(UNIT=10,FMT=*) SourcePositionOfMain(nSource,1),SourcePositionOfMain(nSource,2),SourcePositionOfMain(nSource,3),SourcePositionOfMain(nSource,4),SourcePositionOfMain(nSource,5),SourcePositionOfMain(nSource,6)
    END DO
    READ(UNIT=10,FMT="(A200)") ParemeterCardTemp
前后都有,因为我是在unix系统并行机上计算的,所以我在怀疑是不是并行机的系统的问题

1622

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1972 元
贡献
1249 点

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

发表于 2021-7-9 08:38:58 | 显示全部楼层
从你给的信息看不出问题来。
你可以把代码缩减,比如仅提取读取该文件的部分,让代码尽可能简短,且能重现问题。

然后,把简短的全部代码给出来,文件传上来。以便他人分析。
(你可以点下方的大橘色按钮“回复”,或者快捷回复框右上角的“高级模式”,来上传附件。普通快捷回复无法上传。)
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2021-9-24 10:50

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

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