我花了几个小时在互联网上寻找解决这个问题的方法,却找不到任何东西.我一直在尝试将未格式化的输出写入CSV输出文件,该文件具有多个不同长度和多种数据类型的非常长的行.我正在尝试首先编写一个长标题,指示将在下面写入的变量,用逗号分隔.然后在下面的行上,我正在写标题中指定的值.但是,通过顺序访问,长输出行被分成多个较短的行,这不是我所希望的.我尝试在open语句中使用recl控制行长度,但是在输出后只添加了一堆乱码文本和符号,但仍然出现相同的问题.我也试过使用直接访问,但行的长度不一样,所以也不行.我已经阅读过在Fortran2003中使用流i/o,但我使用的是Fortran90,所以这也不行.我正在使用Fortran 90和使用FTN95编译器的Plato IDE.我在下面添加了一个类似于我想要做的示例程序,使用数组和一些虚拟文本,我在下面包含了说明问题的输出.任何人都知道每个写声明我只能一行吗?任何帮助将不胜感激.任何人都知道每个写声明我只能一行吗?任何帮助将不胜感激.任何人都知道每个写声明我只能一行吗?任何帮助将不胜感激.
module types
integer, parameter :: dp=selected_real_kind(15)
end module types
program blah
use types
use inputoutput
implicit none
integer :: i
character(50)::fileNm
integer :: unitout2=20
real(dp), dimension(100) :: bigArray
fileNm='predictout2.csv'
open(unit=unitout2,file=fileNm,status="replace")
do i=1,100
bigArray(i)=i
end do
write(unitout2,*)"word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,&
&word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,&
&word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word"
write(unitout2,*)bigArray
close(unitout2)
end program
Run Code Online (Sandbox Code Playgroud)
这是上面程序的输出(没有recl):
word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word
,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,wo
rd,word,word,word,word,word
1.00000000000 2.00000000000 3.00000000000 4.00000000000
5.00000000000 6.00000000000 7.00000000000 8.00000000000
9.00000000000 10.0000000000 11.0000000000 12.0000000000
13.0000000000 14.0000000000 15.0000000000 16.0000000000
17.0000000000 18.0000000000 19.0000000000 20.0000000000
21.0000000000 22.0000000000 23.0000000000 24.0000000000
25.0000000000 26.0000000000 27.0000000000 28.0000000000
29.0000000000 30.0000000000 31.0000000000 …Run Code Online (Sandbox Code Playgroud)