Fortran Coder

查看: 4485|回复: 10
打印 上一主题 下一主题

[文件读写] 求助大佬们,这段程序read的.txt文件的格式应该是什么样的...

[复制链接]

6

帖子

1

主题

0

精华

入门

F 币
29 元
贡献
16 点
跳转到指定楼层
楼主
发表于 2022-7-22 14:35:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 阿_玮 于 2022-7-23 15:45 编辑

这段程序输入文件SUR.TXT 里面的内容试了很多种形式,一直是无法成功运行,读取不成功,想知道.TXT文件中的数据应该是怎么样的一种格式,望各位大佬赐教
[Fortran] 纯文本查看 复制代码
INTEGER NX,NY
REAL*8 XE1,YE1
REAL*8, ALLOCATABLE :: H(:,:)

OPEN(1,FILE="SUR.TXT")
                READ(1,400) NX,NY,XE1,YE1,DX,DY
                ALLOCATE(H(0:NX-1,0:NY-1))
                DO I=0,NX-1
                        READ(1,300) (H(I,J),J=0,NY-1)
                ENDDO
                READ(1,*) B,C,K        
        CLOSE(1)
300        FORMAT(1X,5E16.8)
400        FORMAT(2X,2I4,4X,4E16.8)
DXR=XE1/(NX-1)
DYR=YE1/(NY-1)




分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

213

帖子

2

主题

0

精华

宗师

F 币
2131 元
贡献
875 点

规矩勋章

沙发
发表于 2022-7-22 20:12:48 | 只看该作者
需给出sur.txt内容才能判断。

44

帖子

4

主题

0

精华

熟手

F 币
179 元
贡献
90 点
板凳
发表于 2022-7-22 20:33:53 | 只看该作者
按照你写的,read(1,400)后面读了2个整数,4个单精度的科学计数法的数,一共6个值。但你的sur.txt文件中到底写了啥就不知道了,有没有6个值不知道,6个值类型是不是整数不知道,这6个变量类型声明你也没抄,有没有错误也不知道。

6

帖子

1

主题

0

精华

入门

F 币
29 元
贡献
16 点
地板
 楼主| 发表于 2022-7-22 21:10:48 | 只看该作者
zjk0112 发表于 2022-7-22 20:33
按照你写的,read(1,400)后面读了2个整数,4个单精度的科学计数法的数,一共6个值。但你的sur.txt文件中到 ...

因为这个程序对应的sur.txt文件我也没有,所以就想能不能根据它读取的这些信息反推下.txt的文件格式。
感谢感谢
[Fortran] 纯文本查看 复制代码
INTEGER NX,NY
REAL*8 XE1,YE1
REAL*8, ALLOCATABLE :: H(:,:)

DXR=XE1/(NX-1)
DYR=YE1/(NY-1)

6

帖子

1

主题

0

精华

入门

F 币
29 元
贡献
16 点
5#
 楼主| 发表于 2022-7-22 21:12:42 | 只看该作者
风平老涡 发表于 2022-7-22 20:12
需给出sur.txt内容才能判断。

感谢解答,因为这个文件我也没有,所以就想编点数据进去,运行下程序

250

帖子

2

主题

0

精华

宗师

F 币
1731 元
贡献
872 点

规矩勋章

6#
发表于 2022-7-23 10:52:33 | 只看该作者
大概这样:
  00010002      0.12345678E+01  0.12345678E+01  0.12345678E+01  0.12345678E+01
   0.12345678E+01  0.12345678E+01

81

帖子

0

主题

0

精华

专家

F 币
471 元
贡献
232 点

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

QQ
7#
发表于 2022-7-23 18:34:13 | 只看该作者
本帖最后由 青衣巷 于 2022-7-23 19:21 编辑

你有源代码,改成
[Fortran] 纯文本查看 复制代码
INTEGER NX,NY
REAL*8 XE1,YE1
REAL*8, ALLOCATABLE :: H(:,:)

OPEN(1,FILE="SUR.TXT")
                READ(1,*) NX,NY,XE1,YE1,DX,DY
                ALLOCATE(H(0:NX-1,0:NY-1))
                DO I=0,NX-1
                        READ(1,*) H(I,:)
                ENDDO
                READ(1,*) B,C,K        
        CLOSE(1)
DXR=XE1/(NX-1)
DYR=YE1/(NY-1)

就简单多了。

大部分时候,read都不需要指定格式。

彼岸,有永恒的守候...

6

帖子

1

主题

0

精华

入门

F 币
29 元
贡献
16 点
8#
 楼主| 发表于 2022-7-24 11:05:52 | 只看该作者
necrohan 发表于 2022-7-23 10:52
大概这样:
  00010002      0.12345678E+01  0.12345678E+01  0.12345678E+01  0.12345678E+01
   0.12345 ...

非常感谢

6

帖子

1

主题

0

精华

入门

F 币
29 元
贡献
16 点
9#
 楼主| 发表于 2022-7-24 11:07:12 | 只看该作者
青衣巷 发表于 2022-7-23 18:34
你有源代码,改成
[mw_shl_code=fortran,true]INTEGER NX,NY
REAL*8 XE1,YE1

感谢指点,改了下源代码后,试了试,可以运行了,学到了学到了,非常感谢

44

帖子

4

主题

0

精华

熟手

F 币
179 元
贡献
90 点
10#
发表于 2022-7-25 10:29:15 | 只看该作者
青衣巷 发表于 2022-7-23 18:34
你有源代码,改成
[mw_shl_code=fortran,true]INTEGER NX,NY
REAL*8 XE1,YE1

你这个I = 0,NX-1容易数组越界。你这不是C。Fortran这么干,经常在intel的编译器不报错,在别的编译器就报错。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-23 20:49

Powered by Tencent X3.4

© 2013-2024 Tencent

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