为了开发一些测试,如果我可以在源代码中使用字符串文字而不是外部文件或stdin输入FORTRAN READ语句会很有帮助。 Python有一个StringIO
模块,可用于从字符串文字生成类似文件的对象,在FORTRAN中可能类似吗?
即
MAKEFAKEDEVICE(N, 'Some string literal here')
READ(N, '(A)'), VAR1
答案 0 :(得分:3)
您可以使用内部读取或写入(即,来自/来自CHARACTER类型的变量与常规IO的文件的IO):
!Demonstrate internal read/write program intio implicit none character(len=20) :: a, b a = "hello world!" ! Read a into b with A format read(a, '(A)') b print *, b ! Should print "hello world!" ! Now write into b write(b, *) "I said hello!" print *, b ! Read into b from literal !read("Well, hello!", '(A)') b !print *, b end program intio
如果您取消注释最后两行
intread.f90:13.7: read("Well, hello!", '(A)') b 1 Error: UNIT specification at (1) must be an INTEGER expression or a CHARACTER variable
所以不,你不能从文字中读取。
答案 1 :(得分:0)
我刚刚看了一下GCC项目使用的测试,看来以下是有效的,
OPEN(10, STATUS='scratch')
WRITE(10, '(A)'), 'Some literal'
REWIND(10)
READ(10, '(A)') VAR1
答案 2 :(得分:0)
我真的不知道(现在开始思考太早了:)如果这有任何帮助,但你可以尝试在你的帮助中搜索“内部阅读”。
我不知道有什么方法可以读取部分源代码,但是可以通过
之类的内容读取常规字符串string = 'some literal'
read(va1, (a))string
http://www.megasolutions.net/fortran/internal-read-of-character-array_F-ifort-differences-77847.aspx