Fortran Coder

查看: 23716|回复: 12
打印 上一主题 下一主题

[文件读写] 读取文本文件内的指定内容,且指定内容位置不固定。

[复制链接]

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

楼主
发表于 2020-3-16 18:01:58 | 显示全部楼层
对 marc 不了解。
你得先确定,你要读取的这些数据,是多少个?
个数是确定的,不变的。还是需要从输出文件的前面获得,比如
sizing                                 0       100       121         0
alloc                       25
elements                     3

他们是否和后面的数据的个数有关系?

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2020-3-16 22:10:08 | 显示全部楼层
所以,你并没有回答我“如何确定points,coordinates和coonectivity的大小”

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2020-3-17 09:33:29 | 显示全部楼层
[Fortran] 纯文本查看 复制代码
Program www_fcode_cn  implicit none
  Character(len=512) :: cStr
  integer :: k , nUnit = 0 , nNode = 0
  Character(len=*) , parameter :: C_SIZING = 'sizing' , &
                                  C_POINTS = 'points' , &
                                  C_CONNECTIVITY = 'connectivity' , &
                                  C_COORDINATES  = 'coordinates'
  integer , allocatable :: connectivity(:,:)
  real    , allocatable :: coordinates(:,:)
  Open(12,File="model1_job1.dat")
  Do
    read(12,'(a512)',ioStat=k) cStr
    if(k/=0) exit
    cStr = adjustl(cStr)
    if( cStr(:len(C_SIZING)) == C_SIZING ) then
      read(cStr,*) cStr , k , nUnit , nNode
    else if( cStr(:len(C_POINTS)) == C_POINTS ) then
      !//此处可读取points
    else if( cStr(:len(C_CONNECTIVITY)) == C_CONNECTIVITY ) then
      read(12,'(a512)',ioStat=k) cStr
      if(k/=0) exit
      if( nUnit <= 0 ) cycle
      Allocate( connectivity(6,nUnit) )
      read(12,*) connectivity
    else if( cStr(:len(C_COORDINATES)) == C_COORDINATES ) then
      read(12,'(a512)',ioStat=k) cStr
      if(k/=0) exit
      if( nNode <= 0 ) cycle
      Allocate( coordinates(4,nNode) )
      read(12,*) coordinates
    end if
  End Do
  Close(12)
  Open(12,File="out.txt")
  Do k = 1 , size(connectivity,2)
    write(12,*) connectivity(:,k)
  End Do
  Do k = 1 , size(coordinates,2)
    write(12,*) coordinates(:,k)
  End Do
  Close(12)
End Program www_fcode_cn

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

地板
发表于 2020-3-17 16:22:21 | 显示全部楼层
你可以从我给你的代码里,学习相关的内容。然后灵活应用到你新的需求中去。
我不可能一直帮你解决所有的需求。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-3 18:24

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表