Fortran Coder

查看: 9556|回复: 2
打印 上一主题 下一主题

[输入输出] 一个简单的问题

[复制链接]

1

帖子

1

主题

0

精华

新人

F 币
10 元
贡献
4 点
跳转到指定楼层
楼主
发表于 2014-2-21 12:36:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我是新手想请教一个简单的问题,以下是一个   1.txt(共6行内容):


我想做的是找到文中的opq替换为ooo,其余都不变,保存成一个新的文件2.txt。
就是要这个样子


请高手给我完整代码,我自己尝试很多次都失败了,所以看看你们怎么编写的,我学习一下。
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2014-2-21 13:07:43 | 只看该作者
本帖最后由 chuxf 于 2014-2-21 13:21 编辑

这个问题可以很复杂,也可以很简单。

主要受影响的因素是:
1.假如存在其他的 opq 是否需要替换?比如 abcopqdef 连在一起。
2.同一行内是否有可能存在多个 opq ?如果存在,是只替换第一个,还是全部替换?
3.opq 替换为 ooo,长度恰好一样,是否将来可能会替换成长度不一样的?比如 opq 替换为 fcode ?

以下代码按照最简单的书写。
我假定:
1.如存在其他 opq 与其他字符连在一起,也一样替换。
2.同一行只替换第一个 opq
3.opq 替换为 ooo 是长度相同的。

[Fortran] 纯文本查看 复制代码
Program www_fcode_cn
  Implicit None
  Character( Len = 512 ) :: c
  integer :: i
  Open( 12 , File = "1.txt" )
  Open( 13 , File = "2.txt" )
  Do
    Read( 12 , '(a512)' , ioStat = i ) c
    if ( i /= 0 ) Exit
    i = index( c , "opq" )
    if ( i > 0 ) then
      c(i:i+len_trim("opq")-1) = "ooo"
    end if
    Write( 13 , '(a)' ) Trim(c)
  End Do
  Close( 12 )
  Close( 13 )
End Program www_fcode_cn  

135

帖子

15

主题

0

精华

版主

F 币
1159 元
贡献
637 点

爱心勋章管理勋章

板凳
发表于 2014-2-21 21:40:32 | 只看该作者
本帖最后由 珊瑚虫 于 2014-2-21 21:45 编辑

在chuxf的基础上稍作修改,即可实现所有的opq全部修改为ooo   :lol
在程序中加了"goto 10"
[Fortran] 纯文本查看 复制代码
Program www_fcode_cn
  Implicit None
  Character( Len = 512 ) :: c
  integer :: i
  Open( 12 , File = "1.txt" )
  Open( 13 , File = "2.txt" )
  Do
    Read( 12 , '(a512)' , ioStat = i ) c
    if ( i /= 0 ) Exit
 10   i = index( c , "opq" )
    if ( i > 0 ) then
      c(i:i+len_trim("opq")-1) = "ooo"
         goto 10
    end if

    Write( 13 , '(a)' ) Trim(c)
  End Do
  Close( 12 )
  Close( 13 )
End Program www_fcode_cn  


您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-11 02:54

Powered by Tencent X3.4

© 2013-2024 Tencent

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