我尝试在Windows计算机上生成Unix文本文件。
这里是输入文件“ foo”(带有Windows行尾字符)的示例。该文件包含10行:
line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9
line 10
这是一个Fortran程序,将该文件转换为Unix文件,但仅保留前五行:
program test
implicit none
character(255) :: line(1000)
integer :: i,n
open(15,file = "foo.txt")
do i=1,size(line)
read(15,'(a)',end=10) line(i)
enddo
10 continue
n=i-1
write(*,*) n
close(15)
open(15,file="foo.txt",form="unformatted",access="stream")
do i=1,5
write(15) 'unix ',trim(line(i))
write(15) achar(10)
enddo
close(15)
end program
但是当我在cmd窗口中输入命令“ type foo.txt”时,我得到了:
unix line 1
unix line 2
unix line 3
unix line 4
unix line 5
9
line 10
请注意文件末尾的两个意外的额外行!
gfortran的版本:
GNU Fortran(x86_64-posix-seh-rev0,由MinGW-W64项目构建)7.3.0 版权所有(C)2017自由软件基金会,Inc. 这是免费软件;请参阅复制条件的来源。没有 保证;甚至不是出于适销性或针对特定目的的适用性。
在gfortran中出错还是在某个地方出错?
答案 0 :(得分:1)
根据高效能标记的建议,这是我自己的问题的答案:
打开现有文件时,access =“ Stream”和access =“ sequential”的行为与Albert早期评论中提到的行为不同:
要返回顺序行为,即使是在流访问中,也必须在OPEN语句中指定status =“ replace”。