Далее вопрос из моего последнего поста: 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
Однако, что на самом деле не так это switch_1. Поскольку для switch_1 недостаточно элементов, он переходит к следующей строке, заполняя последнюю позицию массива. Это не то, что я хочу. Я хочу ограничить чтение в одной строке, поэтому программа не будет читать другую строку автоматически, и в этом случае программа может остановиться на switch_1 и дать мне «Switch 1» неправильно. Является ли это возможным?
Как это отличается от http://stackoverflow.com/questions/31464930/what-is-this-error-in-fortran-and-how-to-stop-the-program-when-it-occurs? Вы должны ссылаться на свой предыдущий вопрос и объяснять разницу, иначе вы рискуете закрыть и downvoting. –
Также объясните, какую ошибку вы видите. Печатает ли что-нибудь? Является ли результат неправильным? –
Спасибо, я добавлю более подробную информацию по своим вопросам – user3716774