使用Fortran写出CSV格式文件示例
program main
! 使用Fortran写出CSV格式文件
implicit none
real, allocatable, dimension(:) :: x,y,z,u,v,w !< 变量
integer :: N !< 变量长度
integer :: i !< 循环计数器
integer :: fid = 20 !< 文件IO代号
N = 5
! 赋值
allocate( x(N), y(N), z(N), u(N), v(N), w(N) )
do i = 1, N
x(i) = i * 1.0
y(i) = i * 2.0
z(i) = i * 3.0
end do
u = x**2
v = exp(y)
w = sin(z)
! 输出文件
open( fid, file= 'Output.csv' )
do i = 1, N
write( fid, '(*( G0.5, :, ",", X))') x(i), y(i), z(i), u(i), v(i), w(i)
end do
close(fid)
deallocate( x, y, z, u, v, w )
end program main
核心为文件格式:'(*( G0.5, :, ",", X))'
G0.5
为Gw.d
形式。G
表示任何类型都适用的通用编辑描述符;w
为字符域宽,w=0表示不设置;d
为保留有效数字的个数,d=5表示保留5位有效数字:
为格式扫描控制符
,控制着在write语句中最后一个变量输出后,剩余变量的格式,此处加入:
可以避免文件每行行末出现逗号,","
表示输出逗号,X
为nX
形式,即水平方向空n个格,此次单个X表示在右侧空1个格*
为无限循环,即不指定( G0.5, :, ",", X)
输出多少次。
上述程序运行后,输出的Output.csv
文件内容为:
1.0000, 2.0000, 3.0000, 1.0000, 7.3891, .14112
2.0000, 4.0000, 6.0000, 4.0000, 54.598, -.27942
3.0000, 6.0000, 9.0000, 9.0000, 403.43, .41212
4.0000, 8.0000, 12.000, 16.000, 2981.0, -.53657
5.0000, 10.000, 15.000, 25.000, 22026., .65029