likm1110 发表于 2015-3-24 15:40:53

又是‘end of file’的报错,但是这个错误不影响程序运行

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.39.43.5
                   :end a
       vector_b
            2.97.83.3
                   :end b

pasuka 发表于 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

likm1110 发表于 2015-3-24 17:55:21

pasuka 发表于 2015-3-24 16:13
既然知道OPEN的时候添加iostat参数,为啥不用ISO_FORTRAN_ENV模块的IOSTAT_END常量做判断呢?
传送门:
htt ...

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

kif117 发表于 2015-3-24 18:05:44

前面加上
        integer ios
下面这样
   do i=1,数据个数
        read(10,*,iostat=ios) readyourdata   !read
        if (ios /=0) then
        exit
        endif
---
真没太注意过‘安全性’什么的。只要能用就是好程序!:-handshake

likm1110 发表于 2015-3-24 18:51:05

kif117 发表于 2015-3-24 18:05
前面加上
        integer ios
下面这样


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

kif117 发表于 2015-3-24 19:59:25

likm1110 发表于 2015-3-24 18:51
有判断结束的语句阿,否则他就会一直循环没完没了了。安全性也很重要啊= =要不万一程序长了拼死拼活写完 ...

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

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

pasuka 发表于 2015-3-24 21:40:32

likm1110 发表于 2015-3-24 17:55
这个不是03的吗?我的还是95呢.....

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

fcode 发表于 2015-3-24 21:44:18

kif117 发表于 2015-3-24 19:59
不,最坑的其实是.....

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

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

kif117 发表于 2015-3-24 22:46:31

fcode 发表于 2015-3-24 21:44
debug 就好了,不需要手算验证。

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

fcode 发表于 2015-3-25 06:42:33

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

debug 就相当于手算,而且比手算迅速,且易于检查错误。
页: [1] 2
查看完整版本: 又是‘end of file’的报错,但是这个错误不影响程序运行