回 帖 发 新 帖 刷新版面

主题:读取文件时,能否指定读写位置倒退的行数?

大家好!
读取文件的时候,如果读到某位置时,这个位置之前的某些数据有用,此时想再倒退到有用的数据行,重新读取数据,碰到这种情况,应该怎么办?
我本来想用backspace,但是只能退回一步,难道要用循环让backspace一直倒退吗?或者有其他方法可以指定倒退的行数。请指点一下,谢谢!

回复列表 (共9个回复)

沙发

没有。

板凳

那就只能用循环backspace退回去?

3 楼


为什么要倒退多行呢?没其他方法解决吗?不妨把你要实现的功能说来听听。一个简单的方法就是读两遍文件,第一遍解析文件,第二遍提取你需要的东西。

4 楼

还是昨天的数据文件。
我上传了一个图片,方框里面的数据是,节点的x方向,y方向,z方向的坐标。
因为节点的xyz数据之前没有提示字符,之后才有“Initial Conditions;  Time     0.00     (s)”提示字符。所以我就想退回去,先输出节点xyz方向数据,然后再读取其他数据。

5 楼

[quote]还是昨天的数据文件。
我上传了一个图片,方框里面的数据是,节点的x方向,y方向,z方向的坐标。
因为节点的xyz数据之前没有提示字符,之后才有“Initial Conditions;  Time     0.00     (s)”提示字符。所以我就想退回去,先输出节点xyz方向数据,然后再读取其他数据。
[/quote]

“Initial Conditions;  Time     0.00     (s)” 之前多少行可以算出来吗?

6 楼

嗯,可以算出来。根据列数和xyz点数,就可以算出来节点数据占用的行数。

7 楼

今天想了一下,想把后处理程序做的好一些,直接输出tecplot能用的数据,所以就想这样做。

8 楼

[quote]嗯,可以算出来。根据列数和xyz点数,就可以算出来节点数据占用的行数。[/quote]

那简单了,用一个字符串数组str(N+1)就可以了,为避免占用过多内存,数组维数比节点数据占用的行数N(N+1)稍大即可!

读数据,str(1),str(2)...,边读边判断str是否包含“Initial Conditions;”当循环完N+1,把str(1)覆盖,然后str(2)覆盖...!直到找到“Initial Conditions;”为止,需要的数据就在前面的数组里面。

9 楼

嗯,我明白了。
我本来想一步到位输出数据文件的,看了下您的方法,觉得还是分成两个步骤好做一些。谢谢!

我来回复

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