Ich versuche ein einfaches Programm zu schreiben, um eine Funktion mit Fortran95/03 zu berechnen, die als Eingabe eine Zahl (x) benötigt und als Ausgabe eine Zahl (y) bekommt. Die Benutzereingabe ist ein real :: input
und der Leseaufruf sieht aus wieWie überprüft man, ob die Benutzereingabe in die Variable passt?
read (*,*, iostat=stat) input
if(stat > 0) then
print *, "False input, use numbers!"
Der iostat mir hilft zu überprüfen, ob die Eingabe eine Zahl oder ein Buchstabe war.
Mein Problem ist, dass wenn ich eine sehr große Zahl eingeben, wie 1000000000000, stürzt das Programm mit der Fehlermeldung "Pufferüberlauf" ab. Ich weiß, dass ich das reale größer als eine 4-Byte-Variable machen kann, aber ich kann auch die Eingangszahl vergrößern, so dass das Problem nicht gelöst wird.
Die Hauptfrage ist, ist es möglich zu verhindern, dass das Programm aufgrund von Benutzereingaben abstürzt?
Willst du damit sagen, dass das Programm beendet wird, selbst wenn 'iostat =' gegeben ist? Obwohl das Folgende keine Antwort auf die Frage ist, können Sie nicht einfach die Eingabe in der Form "1.5e903" anstatt der unplausibel langen "1500000000000000000000000 ... 0" eingeben? – francescalus