나는 숫자 (x)를 입력으로 요구하고 숫자 (y)를 출력으로 얻는 Fortran95/03로 함수를 계산하는 간단한 프로그램을 작성하려고한다. 사용자 입력이 real :: input
하고 iostat의 입력은 숫자 나 문자가 있다면 확인하는 나에게 도움이 사용자 입력이 변수에 맞는지 확인하는 방법은 무엇입니까?
read (*,*, iostat=stat) input
if(stat > 0) then
print *, "False input, use numbers!"
처럼 읽기 호출 보인다.
제 문제는 1000000000000과 같이 매우 큰 숫자를 입력하면 프로그램이 "bufferoverflow"라는 오류 메시지와 충돌합니다. 나는 4 바이트 변수보다 더 큰 실수를 만들 수 있음을 알고 있지만 입력 숫자를 더 크게 만들 수 있기 때문에 문제가 해결되지 않습니다.
주요 질문은 사용자 입력으로 인해 프로그램이 충돌하는 것을 방지 할 수 있습니까?
'iostat ='이 주어 졌을 때도 프로그램이 종료된다고 말하는가? 다음에 나오는 질문이이 질문에 대한 답이 아니지만, 어쩌면 '15000000000000000000000 ... 0'이 아닌 '1.5e903'형식으로 입력 할 수는 없습니까? – francescalus