读取(*,*)原因(单位=5,文件=';标准输入';)Fortran运行时错误:文件结束
我试图用Fortran 90编写一个小代码段,以读取用户的文件名,我知道这应该很简单,但我就是不知道我做错了什么 剧本是:读取(*,*)原因(单位=5,文件=';标准输入';)Fortran运行时错误:文件结束,fortran,fortran90,Fortran,Fortran90,我试图用Fortran 90编写一个小代码段,以读取用户的文件名,我知道这应该很简单,但我就是不知道我做错了什么 剧本是: 程序测试 隐式无 字符(Len=15)::文件名 写入(*,*)“输入文件名” 读取(*,*)文件名 写入(*,*),这样文件名就叫“文件名” 结束程序测试 然后我使用gfortran在ubuntu系统上编译它: $ gfortran test.f90 -o test.exe 它编译得很好,但是当我运行/test.exe时,我得到以下输出: $。/test.exe 输入
程序测试
隐式无
字符(Len=15)::文件名
写入(*,*)“输入文件名”
读取(*,*)文件名
写入(*,*),这样文件名就叫“文件名”
结束程序测试
然后我使用gfortran在ubuntu系统上编译它:
$ gfortran test.f90 -o test.exe
它编译得很好,但是当我运行/test.exe
时,我得到以下输出:
$。/test.exe
输入文件名
在文件test.f90的第6行(单位=5,文件=stdin)
Fortran运行时错误:文件结束
错误终止。回溯:
#0 0x7f435e83b32a
当我期望得到的是:
$。/test.exe
输入文件名
[用户输入文本时程序暂停]
因此该文件被称为[用户输入的文本]
我就是找不到这个错误的例子,也找不到在线修复的方法。有人能告诉我哪里出了问题吗?我想我们需要更多关于您正在使用的系统(Win/Mac/Linux)的信息,以及您是如何运行该程序的。它看起来有点像没有一个标准的输入流,这是。。。奇怪。欢迎,请拿着这本书读一读。请给我们更多的细节。你的操作系统是什么?你的编译器是什么?你到底是如何运行代码的?在什么类型的终端上?你使用的是哪个版本的gfortran?我在windows计算机中的虚拟Ubuntu 20.04 LTS发布环境中运行。编译器版本为GNU Fortran 7.5.0。我可以在设置中编译和运行其他fortran脚本。只有READ命令触发了错误。听起来你的stdin在虚拟机中被破坏了。您是否可以尝试直接向程序提供输入,例如,
$echo“123”|/test.exe
?我想我们需要有关您正在使用的系统(Win/Mac/Linux)以及您运行程序的确切方式的更多信息。它看起来有点像没有一个标准的输入流,这是。。。奇怪。欢迎,请拿着这本书读一读。请给我们更多的细节。你的操作系统是什么?你的编译器是什么?你到底是如何运行代码的?在什么类型的终端上?你使用的是哪个版本的gfortran?我在windows计算机中的虚拟Ubuntu 20.04 LTS发布环境中运行。编译器版本为GNU Fortran 7.5.0。我可以在设置中编译和运行其他fortran脚本。只有READ命令触发了错误。听起来你的stdin在虚拟机中被破坏了。您是否可以尝试直接向程序提供输入,例如$echo“123”|/test.exe
?