Fortran Coder

查看: 14181|回复: 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, 下载次数: 351)

微信截图_20200319002415.png

model1_job1.dat

4.85 KB, 下载次数: 1

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

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开始?还是从“某一个位置”开始?谢谢你的回复。

22

帖子

6

主题

0

精华

入门

F 币
98 元
贡献
65 点
地板
 楼主| 发表于 2020-3-19 12:17:28 | 显示全部楼层
好的,谢谢。继续学习。外加天天逛帖子
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-18 00:03

Powered by Tencent X3.4

© 2013-2024 Tencent

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