Fortran Coder

查看: 7552|回复: 5
打印 上一主题 下一主题

[文件读写] 我想把左边的文件转换到右边的文件(如图)

[复制链接]

5

帖子

1

主题

0

精华

入门

F 币
43 元
贡献
20 点
跳转到指定楼层
楼主
发表于 2016-3-8 20:22:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

已经写的部分代码,欢迎大神们跟帖

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

5

帖子

1

主题

0

精华

入门

F 币
43 元
贡献
20 点
沙发
 楼主| 发表于 2016-3-8 20:28:22 | 只看该作者
[Fortran] 纯文本查看 复制代码
program example
implicit none
character(len=64)::str
integer::a,b,ierr,i,c,d
open(10,file='test1.txt')
open(11,file='test2.txt')
    do
        read(10,"(a64)",iostat=ierr) str
        if(ierr/=0) exit
        if(index(str,'*Nset')==ierr.and.index(str,'instance')/=ierr)then          
        write(11,'(a)')str((index(str,'nset')+5):(index(str,'instance')-2))
        read(str,*)c
        write(11,*)c
        else 
        end if    
   end do  

!        endif
!        if (str(1:17)=='*Nset, nset=Set-1') then
!            read(10,*) a
!        end if
!        if (str(1:17)=='*Nset, nset=Set-2') then
!            read(10,*) b 
!        end if
!        if(str(1:9)=='*Boundary')then
!        do
!        read(str(:),*,iostat=ierr)c,d       
!        if(ierr/=0) exit
!          if(d<=3)then
!          write(11,"(i1,3x,a2,i1)")a,'TR',d
!          end if
!          if(3<d)then
!          write(11,"(i1,3x,a2,i1)")b,'TR',d
!          end if
!        end do  
!        end if  
close(10)
close(11)
end program example

5

帖子

1

主题

0

精华

入门

F 币
43 元
贡献
20 点
板凳
 楼主| 发表于 2016-3-8 20:29:21 | 只看该作者
输入文件

test1.txt

258 Bytes, 下载次数: 2

回复

使用道具 举报

5

帖子

1

主题

0

精华

入门

F 币
43 元
贡献
20 点
地板
 楼主| 发表于 2016-3-8 20:35:27 | 只看该作者
图片里的意思就是1.把*Boundary下方的set-n集合替换上方的具体数值(节点),集合的名称不具有普遍性,需要*Nset和instance那行和下方的节点    2.set-n后面的数值在1-6之间(自由度)

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
5#
发表于 2016-3-8 21:16:08 | 只看该作者
[Fortran] 纯文本查看 复制代码
Program www_fcode_cn
  Implicit None
  Character (Len=64) :: str
  Integer :: ierr, i , j
  Type NSET
    Character(len=8)      :: cName
    Integer               :: iFreed
    Type(NSET) , pointer  :: Next
  End Type NSET
  Type ( NSET ) , pointer :: lFirst => NULL() , p => NULL()
  Open (10, File='test1.txt')
  Open (11, File='test2.txt')
  Do
    Read (10, '(a64)', Iostat=ierr) str
    If (ierr/=0) Exit
    If (index(str,'*Nset')>0 .And. index(str,'instance')>0 ) Then
       If ( Associated( lFirst ) ) then
         allocate( p%Next )
         p => p%Next
       Else
         Allocate( lFirst )
         p => lFirst
       End If
       i = index( str , "nset=" ) + 4
       j = index( str(i:) , "," ) + i - 1
       p%cName = str(i+1:j-1)
       Read( 10 , * ) p%iFreed
    End If
    If ( str(1:9) == "*Boundary" ) exit
  End Do
  write( 11 , '(a)' ) "*Boundary"
  Do
    Read (10 , * , Iostat=ierr) str , i
    If (ierr/=0) Exit
    p => lFirst
    Do
      If ( .NOT.Associated(p) ) exit
      If ( str == p%cName ) Exit
      p => p%Next
    End Do
    Write( 11 , '(g0,1x,a,g0)' ) p%iFreed , "TR" , i
  End Do
  Close (10)
  Close (11)
End Program www_fcode_cn

5

帖子

1

主题

0

精华

入门

F 币
43 元
贡献
20 点
6#
 楼主| 发表于 2016-3-8 21:24:36 | 只看该作者
老大就是牛,以后得多看看多学习,谢谢老大
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-18 16:17

Powered by Tencent X3.4

© 2013-2024 Tencent

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