Fortran Coder

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

[子程序] 连续两次调用子例行程序 出错

[复制链接]

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

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

楼主
发表于 2016-5-11 15:10:28 | 显示全部楼层
这个 GetFileN 里面 Read(11,*,end=100) line 如果遇到结束了,就返回。但是没有 close,这样很危险。

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

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

沙发
发表于 2016-5-12 12:38:37 | 显示全部楼层
你的问题是 Numline 没有初始化 = 0
如果你 Integer :: NumLine = 0 ,那么只会在第一次执行。第二次以后不再执行。

另外,这种情况,用 Function 会更方便

[Fortran] 纯文本查看 复制代码
Integer Function Num_Line() result( Num )
  Integer   :: k
  Character :: line
  Num = 0 !//这个很重要
  OPEN(11,FILE='material.txt',STATUS='OLD')
  Do
    Read(11,*,iostat=k) line
    If( k /= 0 ) exit
    Num = Num + 1
  End Do
  Close(11)
End Function Num_Line
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-7 04:22

Powered by Tencent X3.4

© 2013-2024 Tencent

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