主题:如何用write输出二维数组???如何不自动换行???
好奇害死猫
[专家分:0] 发布于 2010-07-28 21:52:00
我想输出200*200的数组,应该如何写才能够每行输出200行乘200列的格式???
回复列表 (共7个回复)
沙发
bellanchor [专家分:0] 发布于 2010-07-29 09:10:00
我也是初学,不知道这个能不能实现你想要的结果write(file,*)((a(i,j),i=1,200),j=1,200)
板凳
cgl_lgs [专家分:21040] 发布于 2010-07-29 13:33:00
write(fid,'(200(F,X))')a
3 楼
好奇害死猫 [专家分:0] 发布于 2010-07-29 16:58:00
这样写好像不对呀,写到三个也就换行了,不知道咋回事儿啊……
4 楼
yeg001 [专家分:14390] 发布于 2010-07-29 18:14:00
楼主, 你看看是不是编辑器自动换行了? 严格来说换行有个换行符的.
5 楼
好奇害死猫 [专家分:0] 发布于 2010-07-29 20:28:00
open (10,file='result.txt')
print*, nl1,nm1
do m=0,nl1
do l=0,nm1
write(10,"(F10.4)",advance='no') vx(l,m)
enddo
write(10,*)
enddo
close(10)
我这样写了,貌似对了,的确自动换行了,但是载入origin时仍然是200乘200的,不过也不是到了第三列就换的……
谢谢各位……
6 楼
好奇害死猫 [专家分:0] 发布于 2010-07-29 20:29:00
我试着这样写了,但是不对……不知道是不是别的地方错了??
……谢谢……
7 楼
yeg001 [专家分:14390] 发布于 2010-07-29 21:12:00
[quote]open (10,file='result.txt')
print*, nl1,nm1
do m=0,nl1
do l=0,nm1
write(10,"(F10.4)",advance='no') vx(l,m)
enddo
write(10,*)
enddo
close(10)
我这样写了,貌似对了,的确自动换行了,但是载入origin时仍然是200乘200的,不过也不是到了第三列就换的……
谢谢各位……
[/quote]
为什么不用二楼的方法改一改呢?
你的代码确实可以实现你想要的. 因为advance不设置的情况下,编译器一般默认是"yes", 在你一行"no"完之后就"yes"一次就相当于下一行写下一行数据.
不过通过格式控制来实现想要的输出格式跟简洁和高效.
我来回复