Fortran Coder

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

[文件读写] 读取文件中一个字符串出现的次数

[复制链接]

22

帖子

6

主题

0

精华

入门

F 币
98 元
贡献
65 点
跳转到指定楼层
楼主
发表于 2020-3-19 00:27:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
program find_close
  implicit none
  integer::i=0,k
  character(len=512) ::  cStr
  character,parameter::C_define='define'
  
  
   Open(12,File="model1_job1.dat")
  Do
    read(12,'(a512)',ioStat=k) cStr            
    if(k/=0) exit
    cStr = adjustl(cStr)
    if(cStr(:len(C_define))==C_define)then   
      i=i+1
   endif 
  end do
  write(*,*)i
  close(12)
end program 


在文件中“define”明明只出现了3次,但为什么我的代码最后i是4次
但如果我把含define那部分单独复制出来放在另外一个文件中(如图),再用这个程序读取就是3次,这是为什么?

微信截图_20200319002415.png (28.57 KB, 下载次数: 384)

微信截图_20200319002415.png

model1_job1.dat

4.85 KB, 下载次数: 1

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

260

帖子

0

主题

0

精华

版主

World Analyser

F 币
721 元
贡献
512 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
沙发
发表于 2020-3-19 09:04:54 | 只看该作者
本帖最后由 kyra 于 2020-3-19 09:06 编辑

character,parameter::C_define='define'
改为
character(len=*),parameter::C_define='define'

如果不改的话,C_define 没有定义长度,则长度为1。
所以,虽然赋值为 'define',但实际的值是 'd'
那么程序的作用就变成了:“搜索d开头的行”


而文件中的 dist loads 也满足了要求。
所以 i 就是 4,而不是 3

22

帖子

6

主题

0

精华

入门

F 币
98 元
贡献
65 点
板凳
 楼主| 发表于 2020-3-19 11:55:24 | 只看该作者
其实我想知道 在这个语句描述中if(cStr(:len(C_define))==C_define)then。
cStr(:len(C_define)这个表示的意思,它是指什么?是指从1开始到“C_define”这个字符串长度结束?这个冒号“”前没写数字,是指从默认1开始?还是从“某一个位置”开始?谢谢你的回复。

22

帖子

6

主题

0

精华

入门

F 币
98 元
贡献
65 点
地板
 楼主| 发表于 2020-3-19 11:57:32 | 只看该作者
噢!是这样啊,我照着这别人教我的程序来写,都能写错。还有一个问题,我还想知道,
在这个语句描述中if(cStr(:len(C_define))==C_define)then。
cStr(:len(C_define)这个表示的意思,它是指什么?是指从1开始到“C_define”这个字符串长度结束?这个冒号“”前没写数字,是指从默认1开始?还是从“某一个位置”开始?谢谢你的回复。

737

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
705 元
贡献
361 点

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

5#
发表于 2020-3-19 12:00:50 | 只看该作者
指从1开始到“C_define”这个字符串长度那么长结束
冒号前面没写数字,默认就是1

22

帖子

6

主题

0

精华

入门

F 币
98 元
贡献
65 点
6#
 楼主| 发表于 2020-3-19 12:17:28 | 只看该作者
好的,谢谢。继续学习。外加天天逛帖子
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-25 13:47

Powered by Tencent X3.4

© 2013-2024 Tencent

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