我有以下代码:
if (complex) then
read(unitvector) (CoefC(jl),jl=1,NV)
endif
用户指示数据是否是复数的集合。现在,如果用户指出它,但它实际上不是,我得到错误67(输入需要太多数据)。我如何陷阱,所以我可以写,也许用户犯了一个错误。我觉得它看起来像是:
read(unitvector, ioStat=iocplx) (CoefC(jl),jl=1,NV)
但是我会把" if"检查错误?
答案 0 :(得分:1)
这取决于程序的整体逻辑,我们无法从这么小的代码片段告诉你最好的方法。你可以试试(未经测试):
if (complex) then
read(unitvector, ioStat=iocplx) (CoefC(jl),jl=1,NV)
if (iocplx/=0) stop "Error reading the complex data."
end if
或
if (complex) then
read(unitvector, ioStat=iocplx) (CoefC(jl),jl=1,NV)
if (iocplx/=0) then
write(*,*) "Error reading the complex data, triung real."
complex = .false.
backspace(unitvector)
read(unitvector, ioStat=ioreal) (CoefR(jl),jl=1,NV)
if (ioreal/=0) then
stop "Error reading real data."
end if
end if
end if
但是你真的没有指定你想要的东西,停止程序并写一个有意义的消息?以其他方式读取数据?一切皆有可能,我们没有水晶球。