24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1644  |  回复: 9

atachengqi

新虫 (初入文坛)

[求助] fortran连续读取文件,文件名的问题已有2人参与

从模型计算得出一系列的文件,(例如CC_001,CC_002.......CC_079)
如果要编写语言来依次读取这些文件,文件名这个问题应该怎么解决? (主要是前面那个0啊,一个一个都去掉0也不太现实)

谢谢各位大神了!!!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

7152075

铁杆木虫 (著名写手)

解决问题的方法比遇到的问题多

【答案】应助回帖

感谢参与,应助指数 +1
利用内部文件可以实现,我把代码粘贴给你,这个代码要实现的功能就是读取CC_001~CC_005.txt所有文件,并把读取内容放入result.txt中,你参考此代码去修改。(PS:代码运行开始输入文件有多少个,然后自动出结果)
    Program example
    Implicit None
    Integer::i,n
    Integer,Allocatable::a(
    Character(len=20)::string
    Write(*,*) 'input the number of documents:'    !//输入文件数量
    Read(*,*) n
    Allocate(a(n))
    Do i=1,n
        Write( string,"( 'CC_',i3.3 )" ) i            
        Open( 10+i,file=trim( string )//'.txt' )
        Read( i+10,* ) a(i)
    End do   
    Do i=1,n
        
        Open( 100,file='result.txt' )
        Write( 100,"( i3 )" ) a(i)
    End do
    Read(*,*)
    End Program example
Chemistry
2楼2016-03-12 22:05:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

7152075

铁杆木虫 (著名写手)

解决问题的方法比遇到的问题多

【答案】应助回帖

中间那个笑脸是integer,allocatable::a( : ),想要测试的文件在这里。

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : CC_001.txt
  • 2016-03-12 22:08:29, 1 bytes
  • 附件 2 : CC_002.txt
  • 2016-03-12 22:08:31, 1 bytes
  • 附件 3 : CC_003.txt
  • 2016-03-12 22:08:31, 1 bytes
  • 附件 4 : CC_004.txt
  • 2016-03-12 22:08:31, 1 bytes
  • 附件 5 : CC_005.txt
  • 2016-03-12 22:08:31, 1 bytes
  • 附件 6 : Source1.f90
  • 2016-03-12 22:08:31, 523 bytes
Chemistry
3楼2016-03-12 22:09:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

slx345335197

新虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
N=51
N1=MOD(N,100)
N2=MOD(N,10)
N3=MOD(N,1)

DO I=1,99
OPEN(unit=11,file='CC_'//N1//N2//N3)
CLOSE(11)
END DO
4楼2016-03-12 22:20:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

slx345335197

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by slx345335197 at 2016-03-12 22:20:03
N=51
N1=MOD(N,100)
N2=MOD(N,10)
N3=MOD(N,1)

DO I=1,99
OPEN(unit=11,file='CC_'//N1//N2//N3)
CLOSE(11)
END DO

我忘了加后缀。。。

OPEN(11,file='CC_'//N1//N2//N3//'.TXT')
5楼2016-03-12 22:21:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

atachengqi

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by slx345335197 at 2016-03-12 22:20:03
N=51
N1=MOD(N,100)
N2=MOD(N,10)
N3=MOD(N,1)

DO I=1,99
OPEN(unit=11,file='CC_'//N1//N2//N3)
CLOSE(11)
END DO

谢谢,我想问一下,mod是求余数的运算吧,那N1,N2,N3是如何变化的?
6楼2016-03-14 11:03:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

atachengqi

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by 7152075 at 2016-03-12 22:05:50
利用内部文件可以实现,我把代码粘贴给你,这个代码要实现的功能就是读取CC_001~CC_005.txt所有文件,并把读取内容放入result.txt中,你参考此代码去修改。(PS:代码运行开始输入文件有多少个,然后自动出结果)
  ...

谢谢,不好意思,能问一下 Write( string,"( 'CC_',i3.3 )" ) i 这句话的意思么
7楼2016-03-14 11:05:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

7152075

铁杆木虫 (著名写手)

解决问题的方法比遇到的问题多

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
atachengqi: 金币+30, ★★★★★最佳答案 2016-03-14 22:09:01
引用回帖:
7楼: Originally posted by atachengqi at 2016-03-14 11:05:23
谢谢,不好意思,能问一下 Write( string,"( 'CC_',i3.3 )" ) i 这句话的意思么...

哦,是内部文件(具体参见彭国伦书第260页)的用法。这是将CC_i(其中i按照i3.3格式读入,如果不足三位数则在前面补上0)读入到string字符串中,然后后面读取文件名的时候,直接读string就可以了,如此可将你的CC_XXX后面的东西动态的读进去了。
Chemistry
8楼2016-03-14 13:06:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

caicai820

禁虫 (初入文坛)

本帖内容被屏蔽

9楼2018-08-21 10:31:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

7152075

铁杆木虫 (著名写手)

解决问题的方法比遇到的问题多

引用回帖:
9楼: Originally posted by caicai820 at 2018-08-21 10:31:01
你好,请问为什么 Write( string,"( 'CC_',i3.3 )" ) i 这一行出现“i3.3”的用法呢?...

为了出现001,002,003……,i3.3就是强制整数出现3位。

发自小木虫Android客户端
Chemistry
10楼2018-08-21 16:24:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 atachengqi 的主题更新
信息提示
请填处理意见