liux578 发表于 2015-8-18 14:31:46

数组赋值的问题

代码如下:
    Don=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:15

第一步。定义一个可分配数组。
第二步。通过循环获取文件的行数 N。
第三步。分配可分配数组。
第四步。再次读取该文件。

liux578 发表于 2015-8-18 21:19:02

百事可乐 发表于 2015-8-18 21:17
第一步。定义一个可分配数组。
第二步。通过循环获取文件的行数 N。
第三步。分配可分配数组。


我自己弄的,里面倒是有数据,但全部是0,找不出原因

liux578 发表于 2015-8-18 21:22:45

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:15

你应该读 x , y , z ,而不能 read(13,*) xyzn,因为 xyzn 是数组。你不能每行都读整个数组。

liux578 发表于 2015-8-19 08:55:24

百事可乐 发表于 2015-8-18 21:27
你应该读 x , y , z ,而不能 read(13,*) xyzn,因为 xyzn 是数组。你不能每行都读整个数组。 ...

嗯,搞定了,感谢
页: [1]
查看完整版本: 数组赋值的问题