又是‘end of file’的报错,但是这个错误不影响程序运行
Program tImplicit 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:14 编辑
既然知道OPEN的时候添加iostat参数,为啥不用ISO_FORTRAN_ENV模块的IOSTAT_END常量做判断呢?
传送门:
https://gcc.gnu.org/onlinedocs/g ... 005fFORTRAN_005fENV
pasuka 发表于 2015-3-24 16:13
既然知道OPEN的时候添加iostat参数,为啥不用ISO_FORTRAN_ENV模块的IOSTAT_END常量做判断呢?
传送门:
htt ...
这个不是03的吗?我的还是95呢..... 前面加上
integer ios
下面这样
do i=1,数据个数
read(10,*,iostat=ios) readyourdata !read
if (ios /=0) then
exit
endif
---
真没太注意过‘安全性’什么的。只要能用就是好程序!:-handshake kif117 发表于 2015-3-24 18:05
前面加上
integer ios
下面这样
有判断结束的语句阿,否则他就会一直循环没完没了了。安全性也很重要啊= =要不万一程序长了拼死拼活写完因为一个小bug运行错误的话才叫坑呢。。。。。。 likm1110 发表于 2015-3-24 18:51
有判断结束的语句阿,否则他就会一直循环没完没了了。安全性也很重要啊= =要不万一程序长了拼死拼活写完 ...
不,最坑的其实是.....
程序运行正确,自我感觉想求的东西也表达正确,但是运行结果不符合用手算的验证结果.....
likm1110 发表于 2015-3-24 17:55
这个不是03的吗?我的还是95呢.....
ivf和gfortran都支持的呀,为啥不用呢?! kif117 发表于 2015-3-24 19:59
不,最坑的其实是.....
程序运行正确,自我感觉想求的东西也表达正确,但是运行结果不符合用手算的验证 ...
debug 就好了,不需要手算验证。 fcode 发表于 2015-3-24 21:44
debug 就好了,不需要手算验证。
不不,我是反过来的。因为导师不准用电脑。比如一些题目,计算以后自己找自己的错误是很难的,这样我借用一下电脑程序作为checking mechanism. 当然,计算正确编程错误(运行无误)也是有的。这种就比较难自己改。
kif117 发表于 2015-3-24 22:46
不不,我是反过来的。因为导师不准用电脑。比如一些题目,计算以后自己找自己的错误是很难的,这样我借用 ...
debug 就相当于手算,而且比手算迅速,且易于检查错误。
页:
[1]
2