Fortran Coder

标题: 数组赋值的问题 [打印本页]

作者: liux578    时间: 2015-8-18 14:31
标题: 数组赋值的问题
代码如下:
    Do  n=1,10000
        read(13,*,iostat = ierr)x,y,z
        if (ierr/=0) exit
        xyzn(n,1)=x
        xyzn(n,2)=y
        xyzn(n,3)=z
        write(14,'(3E12.4E3)') xyzn(n,3)
    End Do

13为一个存储三个坐标的数据文件,每行都有3列数据,不知道多少行,但是少于10000行,现在想从中读取数据赋值给一个可分配大小的二维数组xyzn,能够运行,没有提示错误,但是写出来的数组xyzn是空的,请问怎么解决。多谢。



作者: 百事可乐    时间: 2015-8-18 21:17
第一步。定义一个可分配数组。
第二步。通过循环获取文件的行数 N。
第三步。分配可分配数组。
第四步。再次读取该文件。
作者: liux578    时间: 2015-8-18 21:19
百事可乐 发表于 2015-8-18 21:17
第一步。定义一个可分配数组。
第二步。通过循环获取文件的行数 N。
第三步。分配可分配数组。

我自己弄的,里面倒是有数据,但全部是0,找不出原因
作者: liux578    时间: 2015-8-18 21:22
liux578 发表于 2015-8-18 21:19
我自己弄的,里面倒是有数据,但全部是0,找不出原因

    Real,Dimension(64,3) :: xyzn  
   
    Call Gp_process
    Open(13,File="gp_pos_new.txt")
    Do i=1,64
    read(13,*,iostat = ierr) xyzn
        xyzn(i,1)=x
        xyzn(i,2)=y
        xyzn(i,3)=z
    if (ierr/=0) exit
    write(14,'(1E11.4E2,2E12.4E3)')xyzn
    End Do

我就弄了个简单的,用了64行,这样写,xyn.txt是空的
作者: 百事可乐    时间: 2015-8-18 21:27
你应该读 x , y , z ,而不能 read(13,*) xyzn,因为 xyzn 是数组。你不能每行都读整个数组。
作者: liux578    时间: 2015-8-19 08:55
百事可乐 发表于 2015-8-18 21:27
你应该读 x , y , z ,而不能 read(13,*) xyzn,因为 xyzn 是数组。你不能每行都读整个数组。 ...

嗯,搞定了,感谢




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2