从我的最后一个职位另一个问题:What is this error in fortran and how to stop the program when it occurs?是否有可能限制递归阅读在一行?
在我的最后一个职位,我想弄清楚如何识别读取错误时没有输入文件足够的元素,其可以通过使用iostat的来解决阅读声明。
我的新代码是:
program main
implicit none
integer ioerr, switch_1(3), switch_2, i, readerr
open(100, FILE='./input_error.gr', ACTION='READ', IOSTAT=ioerr)
if (ioerr == 0) then
read(100, *, iostat=readerr) (switch_1(i), i=1,3)
if(readerr .ne. 0) then
write(*,*) 'switch 1 wrong'
stop
end if
write(*,*) 'Switch_1 is: ', switch_1
read(100,*,iostat=readerr) switch_2
if(readerr .ne. 0) then
write(*,*) 'switch 2 wrong'
stop
end if
write(*,*) 'Switch_2 is: ', switch_2
else
write(*,*) 'File not read'
end if
end program main
我输入文件看起来像这样:
1,2,3
1
我的新问题是,当有在第一线不到三个要素,程序会自动将在Switch_1和Switch_2的下一行中读取元素将没有任何可读的内容,并且随着程序被编码,它将返回“Switch 2 wrong”。 例如,当输入是这样的:
1,3
2
然而,什么是真正错的是交换机_1。由于switch_1没有足够的元素,因此它会进入下一行填充数组的最后一个位置。这不是我想要的。我想要的是限制一行中的读数,所以程序不会自动读取另一行,在这种情况下,程序可以在switch_1处停止,并给我'开关1错误。可能吗?
这是怎么区别从http://stackoverflow.com/questions/31464930/what-is-this-error-in-fortran-and-how-to-stop-the-program-when-it-occurs?你应该参考你以前的问题,并解释不同之处,否则你可能会面临关闭和投票的风险。 –
也解释你看到哪个错误。它打印什么?结果是否错误? –
谢谢,我会在我的问题中添加更多详细信息 – user3716774