2010-09-20 2 views
0

Оператор read в Фортране прерывает выполнение программы до тех пор, пока не будет нажата клавиша RETURN. Я ищу заявление, которое читает любую нажатую клавишу, не дожидаясь клавиши RETURN. Программа не должна останавливаться даже при отсутствии нажатия клавиши. Благодарим вас за ответ.Как читать вход в Fortran без прерывания программы?

Редактировать: Вот несколько исходных кодов, которые должны разъяснить вопрос.

Program test1 
    n=2 
    do while (n==2) 
    read (*,*) n 
    write (*,*) 'Output' 
    end do 
end program test1 

Program test2 
    n=2 
    do while (n==2) 
    UnknownReadStatement (*,*) n 
    write (*,*) 'Output' 
    end do 
end program test2 

Программа test1 никогда не будет писать слово «Выход» на экране, если ни одна клавиша не будет нажата.

Использование инструкции чтения Я ищу программу test2 должен заполнить экран «Выход», пока не будет нажата клавиша, отличная от «2».

+2

В чем именно проблема, которую вы пытаетесь решить? –

+0

Я обновил свой вопрос. Надеюсь, теперь это станет понятным. –

+1

Хотя я не могу сказать, что гораздо яснее, какую проблему он пытается решить, я считаю, что из этого псевдокода он ищет какой-то ключ прерывания. Я не знаю ни одного в fortran, но также не могу вообразить любую ситуацию, в которой я бы застрял с ней, поэтому я собираюсь разъяснить проблему под рукой, был бы взаимовыгодным. – Rook

ответ

0

Существует пример кода для чтения одного ключа от терминала от Fortran, не требуя, чтобы вход был завершен клавишей возврата http://home.comcast.net/~urbanjost/CLONE/GETKEY/getkey.html. Я не пробовал этот код, поэтому не могу ручаться за него. Его (John Ubran) решение смешивает Fortran и C, используя C getkey. Предполагая, что ваш компилятор поддерживает его (большинство из них), я предлагаю попробовать метод ISO_C_BINDING для объединения Fortran и C. Это не отвечает на вопрос о продолжении программы, даже если не нажата ни одна клавиша - для этого вам придется добавить какой-то тайм-аут, чтобы дать человеку возможность набрать что-то, но на тайм-аут и продолжить, если они не набирают к крайнему сроку. Возможно, вы можете изменить решение, которое я связал с ...

Смежные вопросы