回 帖 发 新 帖 刷新版面

主题:关于fortran输入的问题

请教各位达人,最近学习fortran,看一个程序,这个程序的输入文件的调用使用的是默认I/O单元,我的问题是,这个程序有多个程序文件要从这个输入文件中读取输入,但fortran都是顺序读取的,这样的话,多个文件的读取顺序怎么确定呢,怎么保证它们之间的读取行为不会互相干扰呢?  还请不吝赐教,谢谢了!

回复列表 (共9个回复)

沙发

如果你的程序不是多线程或者并行程序的话,那么Fortran会等前面的语句执行完毕后再执行后面的代码。

板凳

[quote]如果你的程序不是多线程或者并行程序的话,那么Fortran会等前面的语句执行完毕后再执行后面的代码。[/quote]

谢谢回复!有点还是不明白,举个例子,其中一个程序文件读取输入文件中的第二行输入后,要调用另一个程序文件的输出,但那个文件需要读取输入文件的第十行输入,这种情况程序会怎么办? 我这里说的程序就是串行的.

3 楼

如果你重新 Open,那么 Open 时会出错。Fortran 的Open是独占式打开文件的。

如果你不重新Open,那么你需要采用直接读取方式读取第10笔记录,那样做是不影响的。

4 楼


谢谢回复,Fortran 默认读取方式都是顺序读取,如果我理解得不错的话,你说的直接读取方式大概是用RWIND或BACKSPACE等定位语句,是吗? 我手边的程序是用的默认输入通道5。我现在面临的最大的问题是要将众多输入参数跟程序中的相应变量对应起来,而使用READ语句的文件有多个,要搞清每个READ对应哪一行就是关键所在,但要是搞清楚谁先读谁后读就得搞清楚这些文件的互相调用关系,由于程序复杂,这显然是件吃力不讨好的事儿。不知道有没有其它更容易的办法可以达到这个目的?比如MAKEFILE中能不能看出一些端倪呢?

5 楼

[quote]如果你重新 Open,那么 Open 时会出错。Fortran 的Open是独占式打开文件的。

如果你不重新Open,那么你需要采用直接读取方式读取第10笔记录,那样做是不影响的。[/quote]

谢谢回复,Fortran 默认读取方式都是顺序读取,如果我理解得不错的话,你说的直接读取方式大概是用RWIND或BACKSPACE等定位语句,是吗? 我手边的程序是用的默认输入通道5。我现在面临的最大的问题是要将众多输入参数跟程序中的相应变量对应起来,而使用READ语句的文件有多个,要搞清每个READ对应哪一行就是关键所在,但要是搞清楚谁先读谁后读就得搞清楚这些文件的互相调用关系,由于程序复杂,这显然是件吃力不讨好的事儿。不知道有没有其它更容易的办法可以达到这个目的?比如MAKEFILE中能不能看出一些端倪呢?

6 楼

换句话说,你的程序只用了5这个通道号?

NAKEFILE 是不管这个的,它只管编译和链接。跟代码内容没有任何关系。

你要知道哪个先读,哪个后读,那么你必须知道这些代码的执行流程。

Open 有两种方式,一种是 direct,一种是顺序。默认是顺序读取。如果你在Open语句中没有看到 direct的话。

一旦Open,在没有 Close 之前,所有的Read是按照代码执行的顺序进行读取的。
而Close之后,再次Open,则返回文件头部读取。

7 楼

[quote]换句话说,你的程序只用了5这个通道号?

NAKEFILE 是不管这个的,它只管编译和链接。跟代码内容没有任何关系。

你要知道哪个先读,哪个后读,那么你必须知道这些代码的执行流程。

Open 有两种方式,一种是 direct,一种是顺序。默认是顺序读取。如果你在Open语句中没有看到 direct的话。

一旦Open,在没有 Close 之前,所有的Read是按照代码执行的顺序进行读取的。
而Close之后,再次Open,则返回文件头部读取。[/quote]

你说得很有道理,我再看看书,有问题再来此请教,非常感谢!!

8 楼


Keep notes [url=http://www.mmopowerlevel.net]wow power leveling[/url] of how much a stack of resources (light leather from skinning, copper ore from mining, 

silverleaf and [url=http://www.mogxe.com/PowerLevel.php?gid=1]wow power leveling[/url] peaceblossom from herbalism) sell to an NPC vendor 

[url=http://www.mmopowerlevel.net/buy.php]wow gold uk[/url] but dont sell to the vendor. Check [url=http://www.mmopowerlevel.net/powerlist.php?fid=688]wow 

power leveling[/url] the Auction House prices using the search facility and [url=http://www.mogxe.com/BuyGold.php?gid=21]aion kinah[/url] take note of the 

starting and buyout prices for the stacks of resources you are selling. Many items [url=http://www.mogxe.com]wow power leveling[/url] have a buy-out price 

upto 10-20 times [url=http://www.mmopowerlevel.net/powerlist.php?fid=7422]aion power level[/url] the price an NPC vendor will buy from you. I 

[url=http://www.mogxe.com/PowerLevel.php?gid=21]aion power level[/url] personally set my prices as follows .... starting price 2x the NPC vendor buy value 

(around 1.5-2.5s per stack) and [url=http://www.mogxe.com/PowerLevel.php?gid=21]aion powerleveling[/url] a buyout price 5-6 times the NPC buy value unless 

all the competitor sellers buyout [url=http://www.mogxe.com/BuyGold.php?gid=1]buy wow gold[/url] prices are way above or below that, then I set my buyouts at 

just below theirs. 


9 楼

楼主,如何读取一个已知的文件呢?
Open 后面直接加上路径就可以吗

我来回复

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