Fortran Coder

标题: 有没有内部函数能判断是否是文件的开始位置的办法 [打印本页]

作者: liudy02    时间: 2018-12-19 14:01
标题: 有没有内部函数能判断是否是文件的开始位置的办法
想自己写一个程序计算当前所在的行数
才发现似乎Fortran有判断当前是文件末尾的办法,
却似乎没有判断是文件开始的办法啊
大佬们给小白指点指点呗……



作者: li913    时间: 2018-12-19 20:39
返回文件头,用 rewind
作者: liudy02    时间: 2018-12-19 21:26
li913 发表于 2018-12-19 20:39
返回文件头,用 rewind

那个是定位到开头,不是判断是不是开头啊
作者: fcode    时间: 2018-12-19 22:27
文本文件顺序读取,没有办法判断是否是开头。
作者: liudy02    时间: 2018-12-19 22:31
fcode 发表于 2018-12-19 22:27
文本文件顺序读取,没有办法判断是否是开头。

谢谢,看来还真是没有办法
不过这么说的话似乎无格式文件可以?
作者: fcode    时间: 2018-12-19 22:32
stream方式读取文件(有格式或无格式均可)
Inquire(Unit,pos=i)
如果 i == 1 就是开头
作者: liudy02    时间: 2018-12-19 22:47
fcode 发表于 2018-12-19 22:32
stream方式读取文件(有格式或无格式均可)
Inquire(Unit,pos=i)
如果 i == 1 就是开头 ...

哦哦,原来如是,看来这文件读取水还很深呢
只能慢慢琢磨了,非常感谢!
作者: li913    时间: 2018-12-20 12:10
ivf扩展函数getpos可以,文件头i=0。
use ifport
open(10,file=...)
i=getpos(10)

作者: liudy02    时间: 2018-12-20 16:48
li913 发表于 2018-12-20 12:10
ivf扩展函数getpos可以,文件头i=0。
use ifport
open(10,file=...)

哦,听你说过这个ifport扩展模块了
不过我自己还不是很了解,看来还是要啃编译器说明哪
用这个模块也不是不好,不过限定IVF了呀
我考虑自己写个自用的模块算了……
有格式文件反正是按行读取嘛,文件指针又不能再一行的中间
可以写个子程序计算文件的行数,也可以判断是文件的末尾和直接指定文件的首尾位置
那么自然也可以写个子程序返回当前的行数的,嗯嗯嗯,我真是太蛋疼了……
作者: vvt    时间: 2018-12-21 08:21
用 stream 读写有格式(文本)文件就好了呀。见6楼和顺序读取完全兼容。但可以 Inquire 查询位置

作者: li913    时间: 2018-12-21 09:51
liudy02 发表于 2018-12-20 16:48
哦,听你说过这个ifport扩展模块了
不过我自己还不是很了解,看来还是要啃编译器说明哪
用这个模块也不是 ...

写个子程序返回当前的行数?这个我办不到,貌似fortran也办不到。系统函数也许行。
作者: liudy02    时间: 2018-12-21 18:36
vvt 发表于 2018-12-21 08:21
用 stream 读写有格式(文本)文件就好了呀。见6楼和顺序读取完全兼容。但可以 Inquire 查询位置
...

你这么一提醒我明白了,确实stream流读有格式文件也没有问题
可以涵盖顺序读取的所有功能
不过你说这个和顺序读取兼容是怎么回事呢
难道意思是stream流也是可以按行读写么?
作者: liudy02    时间: 2018-12-21 18:38
li913 发表于 2018-12-21 09:51
写个子程序返回当前的行数?这个我办不到,貌似fortran也办不到。系统函数也许行。 ...

反正顺序读取的位置只有行数啊,又没有在行里边的位置
只要先计算到文件末有多少行,然后Rewind后再数一遍有多少行
然后再回到初始位置不就OK了…………




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