Fortran Coder

查看: 19410|回复: 13
打印 上一主题 下一主题

[文件读写] 又是‘end of file’的报错,但是这个错误不影响程序运行

[复制链接]

55

帖子

16

主题

0

精华

专家

F 币
621 元
贡献
265 点

规矩勋章

跳转到指定楼层
楼主
发表于 2015-3-24 15:40:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
Program t
  Implicit None
  Real :: a(3)       
  Real :: b(3) 
  Character(10) :: cha
  Integer :: ioerr
  Open(11,file='in.txt',iostat=ioerr)
  Open(12,file='out1.txt')
  Do
    Read(11,*) cha
    If (cha(1:) == 'vector_a') Then
      Write(*,*) cha
      Read(11,*) a(:)
      Write(12,*) 'a:', a(:)
    Endif
    If (cha(1:) == 'vector_b') Then
      Write(*,*) cha
      Read(11,*) b(:)
      Write(12,*) 'b:', b(:)
    Endif
    If (ioerr/=0) Exit
  Enddo
  Close(11)
End Program t


出现如下报错 : ‘At line 10 of file testofcha00.f95 (unit = 11, file = 'in.txt')
                           Fortran runtime error: End of file’
不过程序的运行不出现错误,读入和写入都没问题。这个错误的出现会不会影响安全性什么的阿?
'in.txt'文件内容为:
       vector_a
              1.3  9.4  3.5
                   :end a
       vector_b
              2.9  7.8  3.3
                   :end b

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

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

沙发
发表于 2015-3-24 16:13:07 | 只看该作者
本帖最后由 pasuka 于 2015-3-24 16:14 编辑

既然知道OPEN的时候添加iostat参数,为啥不用ISO_FORTRAN_ENV模块的IOSTAT_END常量做判断呢?
传送门:
https://gcc.gnu.org/onlinedocs/g ... 005fFORTRAN_005fENV

55

帖子

16

主题

0

精华

专家

F 币
621 元
贡献
265 点

规矩勋章

板凳
 楼主| 发表于 2015-3-24 17:55:21 | 只看该作者
pasuka 发表于 2015-3-24 16:13
既然知道OPEN的时候添加iostat参数,为啥不用ISO_FORTRAN_ENV模块的IOSTAT_END常量做判断呢?
传送门:
htt ...

这个不是03的吗?我的还是95呢.....

46

帖子

8

主题

0

精华

熟手

F 币
211 元
贡献
131 点
地板
发表于 2015-3-24 18:05:44 | 只看该作者
前面加上
        integer ios
下面这样
     do i=1,数据个数
        read(10,*,iostat=ios) readyourdata   !read
        if (ios /=0) then
        exit
        endif
---
真没太注意过‘安全性’什么的。只要能用就是好程序!

55

帖子

16

主题

0

精华

专家

F 币
621 元
贡献
265 点

规矩勋章

5#
 楼主| 发表于 2015-3-24 18:51:05 | 只看该作者
kif117 发表于 2015-3-24 18:05
前面加上
        integer ios
下面这样

有判断结束的语句阿,否则他就会一直循环没完没了了。安全性也很重要啊= =要不万一程序长了拼死拼活写完因为一个小bug运行错误的话才叫坑呢。。。。。。

46

帖子

8

主题

0

精华

熟手

F 币
211 元
贡献
131 点
6#
发表于 2015-3-24 19:59:25 | 只看该作者
likm1110 发表于 2015-3-24 18:51
有判断结束的语句阿,否则他就会一直循环没完没了了。安全性也很重要啊= =要不万一程序长了拼死拼活写完 ...

不,最坑的其实是.....

程序运行正确,自我感觉想求的东西也表达正确,但是运行结果不符合用手算的验证结果.....

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

7#
发表于 2015-3-24 21:40:32 | 只看该作者
likm1110 发表于 2015-3-24 17:55
这个不是03的吗?我的还是95呢.....

ivf和gfortran都支持的呀,为啥不用呢?!

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

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

8#
发表于 2015-3-24 21:44:18 | 只看该作者
kif117 发表于 2015-3-24 19:59
不,最坑的其实是.....

程序运行正确,自我感觉想求的东西也表达正确,但是运行结果不符合用手算的验证 ...

debug 就好了,不需要手算验证。

46

帖子

8

主题

0

精华

熟手

F 币
211 元
贡献
131 点
9#
发表于 2015-3-24 22:46:31 | 只看该作者
fcode 发表于 2015-3-24 21:44
debug 就好了,不需要手算验证。

不不,我是反过来的。因为导师不准用电脑。比如一些题目,计算以后自己找自己的错误是很难的,这样我借用一下电脑程序作为checking mechanism. 当然,计算正确编程错误(运行无误)也是有的。这种就比较难自己改。

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

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

10#
发表于 2015-3-25 06:42:33 | 只看该作者
kif117 发表于 2015-3-24 22:46
不不,我是反过来的。因为导师不准用电脑。比如一些题目,计算以后自己找自己的错误是很难的,这样我借用 ...

debug 就相当于手算,而且比手算迅速,且易于检查错误。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-3 08:57

Powered by Tencent X3.4

© 2013-2024 Tencent

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