Fortran Coder

楼主: 18822146653
打印 上一主题 下一主题

[流程控制] FORTRAN小白,循环方面

[复制链接]

19

帖子

5

主题

0

精华

入门

F 币
98 元
贡献
62 点
跳转到指定楼层
楼主
发表于 2019-9-16 16:17:01 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
现在我有一个2.DAT文件(时变会覆写),为1列12行,数据格式都一样。
现需要每一行读出来(每一行数据都会随时间变化,且行数挺多),然后需要的行数内容写入到其他的.DAT文件中
不知道该如何用循环做,没有做出来
求助啊


新建文本文档.txt

1.14 KB, 下载次数: 3

没有循环

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

19

帖子

5

主题

0

精华

入门

F 币
98 元
贡献
62 点
沙发
 楼主| 发表于 2019-9-17 19:07:27 | 显示全部楼层
胡文刚 发表于 2019-9-17 12:55
[mw_shl_code=fortran,true]Program Main
  Implicit None
  real A(1,12)

嗯嗯,感谢您的回答。我这里还有几个疑问:我C.DAT文件中的数据按照第3到第8行就定义了吗?为A()吗?

19

帖子

5

主题

0

精华

入门

F 币
98 元
贡献
62 点
板凳
 楼主| 发表于 2019-9-17 19:31:30 | 显示全部楼层
胡文刚 发表于 2019-9-17 12:55
[mw_shl_code=fortran,true]Program Main
  Implicit None
  real A(1,12)

刚才添加进去,运行了一下,还是不行。
有几个问题:①这个C是什么意思呢?
②我C.DAT文件只是1列12行数字,也没有变量定义,这样就定义了吗?
③第12行‘//trim(adjustl(c))//’是什么意思呢?我自己创建了几个.DAT空文件,如何写入这些文件中呢?
④第10行~11行,可以给一个注释吗?想了半天不太理解。。。外行

19

帖子

5

主题

0

精华

入门

F 币
98 元
贡献
62 点
地板
 楼主| 发表于 2019-9-18 09:59:48 | 显示全部楼层
胡文刚 发表于 2019-9-17 20:54
①这个C是什么意思呢?
C是一个字符串,用来临时存储 i 转换成的字符串,比如 “1” 或 “2” 这样的字符串 ...

为什么这样定义CHARACTER(LEN=16)::C呢?为什么要长度为16
我添加进去还是不能运行,哎。。
还有我想问问您:我上传的TXT中,有时候运行也会失败,不清楚是怎么回事?
我这样
[Fortran] 纯文本查看 复制代码
REAL A(1,12)
OPEN(17,FILE='E:\tempabaqus\C.DAT')
READ(17,*)A(:,1)
READ(17,*)A(:,2)
READ(17,*)A(:,3)
READ(17,*)A(:,4)
READ(17,*)A(:,5)
READ(17,*)A(:,6)
READ(17,*)A(:,7)
READ(17,*)A(:,8)
READ(17,*)A(:,9)
READ(17,*)A(:,10)
READ(17,*)A(:,11)
READ(17,*)A(:,12)
OPEN(UNIT=18,FILE='E:\tempabaqus\1.DAT')
OPEN(UNIT=101,FILE='E:\tempabaqus\2.DAT')
OPEN(UNIT=102,FILE='E:\tempabaqus\3.DAT')
OPEN(UNIT=103,FILE='E:\tempabaqus\4.DAT')
OPEN(UNIT=104,FILE='E:\tempabaqus\5.DAT')
OPEN(UNIT=105,FILE='E:\tempabaqus\6.DAT')
OPEN(UNIT=106,FILE='E:\tempabaqus\7.DAT')
OPEN(UNIT=107,FILE='E:\tempabaqus\8.DAT')
WRITE(18,150)A(:,1)
150   FORMAT(F20.10,5X)
      WRITE(101,160)A(:,2)
160   FORMAT(F20.10,5X)
      WRITE(102,170)A(:,3)
170   FORMAT(F20.10,5X)
      WRITE(103,180)A(:,4)
180   FORMAT(F20.10,5X)
      WRITE(104,190)A(:,6)
190   FORMAT(F20.10,5X)
      WRITE(105,200)A(:,8)
200   FORMAT(F20.10,5X)
      WRITE(106,210)A(:,9)
210   FORMAT(F20.10,5X)
      WRITE(107,220)A(:,11)
220   FORMAT(F20.10,5X)

这些也会失败,真不明白,这样读取每行数据有什么不对。

19

帖子

5

主题

0

精华

入门

F 币
98 元
贡献
62 点
5#
 楼主| 发表于 2019-9-18 10:46:35 | 显示全部楼层
胡文刚 发表于 2019-9-17 20:54
①这个C是什么意思呢?
C是一个字符串,用来临时存储 i 转换成的字符串,比如 “1” 或 “2” 这样的字符串 ...

是不是只有一个READ时候,不管是多少行的数据,读的都是第一行啊?我试了几次都是读的第一行的///

19

帖子

5

主题

0

精华

入门

F 币
98 元
贡献
62 点
6#
 楼主| 发表于 2019-9-18 11:49:00 | 显示全部楼层
胡文刚 发表于 2019-9-18 11:02
为什么这样定义CHARACTER(LEN=16)::C呢?为什么要长度为16
因为整数要转换(写入)成字符串,32位整数最多 ...

我试着这样写
[Fortran] 纯文本查看 复制代码
      REAL A(1,12)
      OPEN(UNIT=17,FILE='E:\tempabaqus\C.DAT')
      READ(17,*) A(:,2)
      READ(17,*) A(:,1)
      READ(17,*) A(:,4)
      READ(17,*) A(:,6)
      OPEN(UNIT=101,FILE='E:\tempabaqus\2.DAT')
      OPEN(UNIT=102,FILE='E:\tempabaqus\1.DAT')
      OPEN(UNIT=103,FILE='E:\tempabaqus\4.DAT')
      OPEN(UNIT=104,FILE='E:\tempabaqus\6.DAT')
      WRITE(101,150) A(:,2)
      WRITE(102,150) A(:,1)
      WRITE(103,150) A(:,4)
      WRITE(104,150) A(:,6)
150   FORMAT(F20.10,5X)
      F=-1000
      CLOSE(17)
      CLOSE(101)
      CLOSE(102)
      CLOSE(103)
      CLOSE(104)

最后得到的是C.DAT文件的前四行,一次一行的读。所以,好像跟A(:,I)中的I没有太大关系。因为我是用在ABAQUS中,出错了,就说子程序错误,没有任何别的提示,哎,所以只能笨不啦叽的改。我尝试着用过您的哪个代码,还是失败了

19

帖子

5

主题

0

精华

入门

F 币
98 元
贡献
62 点
7#
 楼主| 发表于 2019-9-18 23:16:46 | 显示全部楼层
胡文刚 发表于 2019-9-18 15:51
Abaqus不知道怎么用。
我自己单独运行,测试是没问题的。

嗯,非常非常感谢您,我自己的问题再找找原因,哎,软件让人头大
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-1 07:35

Powered by Tencent X3.4

© 2013-2024 Tencent

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