回 帖 发 新 帖 刷新版面

主题:Fortran如何读取未知数目和大小的数据文件?

      我现在在写个程序需要读取一定数目的数据文件(但所读取数据文件的数目、文件名在程序运行时才从其他文件读入),数据文件数据的列数固定,但行数不固定。

      哪位大佬能指点一下如何处理?

回复列表 (共10个回复)

沙发

先写个函数确定文件的行数。

板凳

感谢雪球大佬
现在关键是文件数目待定,这样的话,不知道声明变量怎么处理,因为文件数据的行数不统一,不能用数组一下搞定

3 楼

如果要把所有文件的所有数据放在一起存储,仔细想想是不是必要?

能不能一个文件一个文件的处理?变量循环利用?真的有必要把全部文件的全部数据放在同一个数组里么?

如果有,那就先获得所有文件的行数,然后加起来,分配数组。

4 楼

不知道这句能帮到你么
logical res
res=systemqq("dir /b "//"*.*"//">"//"dir.txt")
end
这句作用为把一个文件夹中的所有文件名写入一个文件中,对于一次处理不确定的多个文件很有效果,写入后你再去读取文件就方便了

其中"*.*"为你要读取的文件夹,支持目录格式和通配符,如果要全部读取txt的则为“*.txt” , "dir.txt"则为输出文件名的结果

至于行数不确定,用逻辑判断是否读取完,这个简单。

5 楼


不知道这句能帮到你么

logical
res res=systemqq("dir /b "//"*.*"//">"//"dir.txt")
end

这句作用为把一个文件夹中的所有文件名写入一个文件中,对于一次处理不确定的多个文件很有效果,写入后你再去读取文件就方便了
其中"*.*"为你要读取的文件夹,支持目录格式和通配符,如果要全部读取txt的则为“*.txt” , "dir.txt"则为输出文件名的结果

至于行数不确定,用逻辑判断是否读取完,这个简单。

上面那个为什么换行都被取消了,很难看

6 楼


楼上正解,先找出所有文件的文件名,在进行处理,我习惯是写到一个文件中,这样方便统计行数,有了行数你的问题就迎刃而解了

7 楼

我没表达清楚,楼上几位可能误会我的意思了。
这些文件名是已知的,只是文件中数据的行数未知(而且这些数据列数相同,行数不同),但进行下面的计算时,需要用到每一个文件中的数据,现在的问题关键是这些数据如何存储。用三维数组,会浪费空间,而且会给下面的计算操作带来困难;用二维数组,把所有文件的数据按行读入,同样会给接下来的计算带来困难。
尝试了好久,终于用指针比较圆满的解决了这个问题,如果有碰到相同问题的,可以交流一下。

8 楼

我觉得用二维数组就足够了。

先写个函数,获得文件的行数,加起来,得到总的行数。

然后分配二维数组。

最后读取这些文件。

9 楼


如果你会用c和fortran混合编程,
可以用c实现需要的功能,然后连接到fortran

10 楼


用指针怎么解决呢?我就有这样的问题……还真想求楼主指点指点……

我来回复

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