我使用英特尔Fortran 2013在Visual Studio 2008上编译Fortran 77项目,我在可执行文件创建的输出文件中遇到了一个愚蠢的问题。 在这个文件中,我希望读到类似
的内容EXPECT FILE :
"
foo1
foo2
"
相反,我获得了几乎相同,但中间有空行:
OBTAINED FILE:
"
foo1
foo2
"
这看起来像一个细节但实际上是一个问题,因为这个文件是由另一个没有检查空行的程序读取的。 奇怪的是,我也在Linux下编译了这个问题并没有出现,这就是为什么我认为它必然是Visual Studio选项问题。
源代码如下所示:
character*80 comment(2)
comment(1)="foo1"
comment(2)="foo2"
do i=1, 2
write(10,*)comment(i)
end do
我尝试在Fortran Properties中更改了几个选项,但没有一个能够正常工作
有人对此有所了解吗?
答案 0 :(得分:1)
这是(很可能)因为打印的字符串包括所有80个字符,即使是尾随空格(如评论中所示)。通过将字符串打印在引号中,可以直接观察到这一点:
WRITE(10, '(A)') "'"//comment(i)//"'"
一种解决方案是使用,例如,
WRITE(10, '(A)') TRIM(ADJUSTL(comment(i)))
此处,ADJUSTL
会删除前导空格。如果这不合适,可以只使用TRIM
。