Fortran write 插入 2 个换行符 w

Fortran write inserts 2 newlines w

在我目前用 Fortran90 编写的一个简单测试例程中,字符串输出比屏幕长。当使用标准 write(,) 语句时,输出中不是简单地添加新行并在下一行继续,而是在继续输出之前添加第二个换行符。

示例代码:

write(*,*) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

Intel Visual Fortran Composer XE 2013 SP1 输出:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

这是为什么?这个额外的换行符来自哪里?

通过使用 list-directed 输出,你用 write 语句的参数中的第二个 * 来做,你放弃了对输出格式化到编译器作者的心血来潮。使用特定格式夺回控制权,例如 write(*,'(a128)')(将 128 替换为适合您要写入的字符串长度的任何内容)。看看会发生什么。

学习将 repeat 函数用于重复字符串可能会让您觉得有趣。