我在Fortran中是全新的,我需要编写一些相对简单的代码 .
我有一些文件(各种文件,例如200个文件);特定节点的每个文件,通过一些简化,每个文件包含:
T(i), X(i)
这些是我的输入,我希望有一个输出文件包含:
T(i) X(i)1 X(i)2 ... X(i)n
问题是我无法将输出文件的不同列中的数据分开,它们在1列中相继出现 .
我的代码是:
PROGRAM Output
implicit none
integer ::nn,n,i,j,l
real,dimension(:),allocatable::t,x,y,z
character(len=10)::TD
open(11,file='outputX.txt')
allocate (t(1000),x(1000),y(1000),z(1000))
n=5 ! Number of Files
nn=50 ! Number of Rows in each File
Do i=1,n ! loop for opening different files
write(TD,10)i
write(*,*)TD
open(1,file=TD)
Do l=1,nn ! loop for reading rows in each file
read(1,*)t(j),x(j)
write(11,*)x(j) !!!! This is my PROBLEM, all the data shows in
! one column, I want each file in separately
Enddo
Enddo
10 format('100',i3.3,'')
deallocate(x,y,z,t)
END PROGRAM Output
我得到的输出是这样的:
11
12
13
21
22
23
31
32
33
但实际上我想:
11 21 31
12 22 32
13 23 33
3 回答
您的代码有几个问题
索引
j
完全未定义 . 你应该在循环中的某处放置j=1
或0
和j=j+1
.另一个问题是你的输出 . 您正在按顺序读取文件 . 将每个文件打印到单独的列中非常困难 . 每个文件的单独行很容易:
after 内循环 .
或者更精细的控制并避免换行
(g0是一般编辑描述符,仅使用必要的宽度) . 这只有在你修复我上面提到的
j
问题时才有效!要将它放入单独的列中,您必须这样做
要么
所以我得到的是
x(1) belongs to 11
,x(2) belongs to 12
,x(3) belongs to 13
等等,不是吗?你可以尝试这个:2D阵列...对于这个问题它是向后但它应该给你一些帮助...(希望)