回 帖 发 新 帖 刷新版面

主题:请问如何读取不定列数的数值?

大家好!


我在读取数据的时候,遇到了一个问题。

假设有这样的数据:

数据总数为100个,每行都存放八个数据,到最后一行的时候,则就变成存放4个数据。请问这样的数据,应该怎么读取?

我本来想用一个变量b循环100次读取,没有成功,用一个数组a(100)的读取,也没有成功。

请问应该怎么读取?请指点一下,谢谢!

我上传了程序代码及数据文件,程序代码有点问题。数据文件的时间步长有5和10。
要实现的功能是,输入p的时候,将Pmap.dat下的pressures数据输出tecplot文件格式;
输入t的时候,将Pmap.dat下的tempreture数据输出tecplot文件格式;

回复列表 (共7个回复)

沙发

唉,回家慢慢想吧。

板凳

一行一行地读就可以了,不过要加上iostat=nstat子句,否则最后一行会跳出的:)

3 楼


既然知道数据总数N,每行的数据数M个,就知道完整N/M行,最后一行剩余R=mod(N,M)个。然后不就可以控制读出么?

4 楼

昨晚回去想了一下,今天又弄了一个早晨,后处理程序差不多完成了。
昨天造成数据一直没有读成功的原因是程序的语法错误,我好多时候都犯了语法错误,郁闷!
我定义了一个数组读数据,将数据保存在数组中。read(1,*) (a(i),i=1,np),等到需要的时候,写完数据后,再释放内存。这样做的缺点是,如果总节点数np比较大的话,占用内存就大了。我一时也想不到什么好办法。
我原本也想采用mod(N,M)函数控制的,但是又觉得代码多了一些。
还有一个问题,请指导一下。我定义了一个字符串数组,读入每行的字符串,但是如果程序这样写的话,无法读入数据,一直报错:
    read(1,'(a)',iostat=error)   strN(i)
这样写的话,就可以读入数据。
    read(1,'(a)',iostat=error)   astr
        strN(i)=astr
为什么产生这样的问题?[em10][em10][em18]

5 楼

read(1,'(a)',iostat=error)   strN(i:i)

6 楼

是这样读啊,晕死了[em10]

7 楼

呵呵,是的,不过建议还是一贴一个问题比较好些:)
且解决后尽快结贴免得给广告机会:)

我来回复

您尚未登录,请登录后再回复。点此登录或注册