Как мне прочитать ввод в Фортране, не прерывая программу? - PullRequest
0 голосов
/ 20 сентября 2010

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

Edit: Вот некоторый исходный код, который должен прояснить вопрос.

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 никогда не будет писать слово «Вывод» на экране, если не нажата ни одна клавиша.

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

1 Ответ

0 голосов
/ 21 сентября 2010

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

...