私は、入力として数値(x)を必要とし、出力として数値(y)を得るFortran95/03で関数を計算する簡単なプログラムを書こうとしています。 ユーザ入力はreal :: input
で、read呼び出しがユーザー入力が変数に収まるかどうかを確認するにはどうすればよいですか?
read (*,*, iostat=stat) input
if(stat > 0) then
print *, "False input, use numbers!"
のように見えるのiostatは、入力が数字または文字だったかどうかを確認するために私を助けます。
私の問題は、1000000000000のように非常に大きな数値を入力すると、プログラムがエラーメッセージ "bufferoverflow"でクラッシュすることです。私は4バイトの変数より大きい実数を作ることができることを知っていますが、入力数を大きくすることもできますので、問題は解決しません。
主な質問は、ユーザー入力のためにプログラムがクラッシュするのを防ぐことができますか?
あなたは 'iostat ='が与えられてもプログラムが終了すると言っていますか?次のことはその質問への答えではありませんが、あなたは入力が '15000000000000000000000 ... 0'というのではなく、' 1.5e903'という形で与えることはできませんか? – francescalus