我有一个read语句,需要一个非常简单的示例代码:
program test
integer var
read(*,*) var
end
Run Code Online (Sandbox Code Playgroud)
问题是我通常会因为分心而输入一串字符(即:是).如何防止我的代码完全停止,而是显示您输入的值不正确的类型的错误消息.再试一次?
我想的是:
program test
integer var
10 read(*,*) var
if (var.not.a.number) then
write(*,*)'You've entered an incorrect value. Try again'
goto 10
endif
end
Run Code Online (Sandbox Code Playgroud)
会是什么var.not.a.number条件是什么样子?我gfortran用来在Ubuntu下编译.
编辑:谢谢大家!我最终实现了HPM的第三个选项,因为它是最简单的选项:
program test
integer var,iostat,ios
10 read(*,*,iostat=ios) var
if (ios.ne.0) then
write(*,*)'You've entered an incorrect value. Try again'
goto 10
endif
end
Run Code Online (Sandbox Code Playgroud)
特别感谢User7391谁花了很多钱来编写所有代码!
您正在使用列表导向的输入.*语句中的第二个read(*,*)基本上告诉编译器/运行时系统,你将在运行时为它提供一些可以解释为的东西integer.如果你想给自己输入错误的自由,你有(至少)3个选择.
read(*,*,err=1234)哪里1234是你的错误处理声明(S)的标签.这种方法现在被认为是相当老式的,可能不赞成.read(*,*,iostat=ios),其中ios是一个整数变量,它抓住了iostat被报道(I/O状态标志)read声明.然后,您可以编写if (iostat/=0) ...用于错误处理的行.这被认为是更新的方法.| 归档时间: |
|
| 查看次数: |
1712 次 |
| 最近记录: |