【问题标题】:How do I read an input in Fortran without interrupting the program?如何在不中断程序的情况下读取 Fortran 中的输入?
【发布时间】:2010-09-20 18:54:02
【问题描述】:

Fortran 中常用的read 语句会中断程序的执行,直到按下 RETURN 键。我正在寻找一个无需等待 RETURN 键即可读取任何按下的键的语句。即使没有按下任何键,程序也不应该停止。 谢谢你的回答。

编辑: 这是一些应该澄清问题的源代码。

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 应该用“Output”填充屏幕,直到按下不同于“2”的键。

【问题讨论】:

  • 您要解决的具体问题是什么?
  • 我已经更新了我的问题。我希望现在更容易理解。
  • 虽然我不能说他试图解决什么问题更清楚,但我相信他正在从那个伪代码中寻找某种中断键。我不知道 fortran 中的任何内容,但也无法想象在任何情况下我都会陷入困境,所以我收集澄清手头的问题,这将是互惠互利的。

标签: fortran fortran90


【解决方案1】:

有一个示例代码用于从 Fortran 终端读取单个键,而无需在 http://home.comcast.net/~urbanjost/CLONE/GETKEY/getkey.html 处以返回键终止输入。我没有尝试过这段代码,所以不能保证。他的 (John Ubran) 解决方案使用 C getkey 混合了 Fortran 和 C。假设您的编译器支持它(大多数都支持),我建议尝试使用 ISO_C_BINDING 方法来组合 Fortran 和 C。即使没有按下任何键,这也不能回答有关程序进行的部分——因为您必须添加某种超时,让这个人有机会输入一些东西,但如果他们没有在截止日期前输入,就会超时并继续。也许您可以修改我链接到的解决方案...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 2014-05-03
    相关资源
    最近更新 更多