- 积分
- 1135
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-4-20
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本人手里有小时文件资料,现在需要读取文件中的降水量和气温,但是文件中排列顺序是四行,列数不同,其中缺测的地方还用的:///表示,个数不一样高,导致我后来利用论坛的一个程序将其中的缺测变为99后,数据之间的空格还不等,之后想利用字符串分割,变成一个个数据,然后写入另一个文件,然后在读取,但是,总是出现这样如图的问题,实在是不知道哪里的问题,求各位大神帮助,不胜感激!!!!!! 或者哪位好心人指点我下到底怎么样可以直接读这个数据的气温和降水,PS:气温是数据中的0247,降水是数据中的000
program main
implicit none
character*300 :: str
character*100 :: rstr(1000)
integer*4 :: n,i
open(22,file='00.txt')
open(10,file='20110728010000.txt')
read(22,"(a300)") str
! str = '545110-99999-2013.TXT'
call sub_split(trim(str),' ',rstr,n)
print *,n
do i= 1,n
print *,i,len(rstr(i))
write(10,"(a)") rstr(i)
enddo
end
subroutine sub_split(str,instr,rstr,n)
!!! 原字符串str从非空开始,结束于非空
!!! str 需要分割的字符串,instr 分割字符,支持单个字符或者字符串作为分割字符,rstr 存放分割结果的字符数组,允许最多存放1000段,每段100个字符,n 实际分割出的字符(串)数
implicit none
character(len=*) :: str,instr
character*100 :: rstr(1000)
integer*4 :: n
integer*4 :: allcount,subcount
integer*4 :: ilab,i
logical*4 :: logflag
allcount = len(str)
subcount = len(instr)
i=1
n = 0
ilab = 1
logflag = .false.
do while(i<=allcount-subcount)
if(str(i:i+subcount-1).eq.instr) then
if(logflag) then
n = n+1
rstr(n) = str(ilab:i-1)
logflag = .false.
endif
ilab = i+subcount
i = i+1
else
logflag = .true.
i = i+1
endif
enddo
if(logflag) then
if(str(i:i+subcount-1).eq.instr) then
n=n+1
rstr(n) = str(ilab:i-1)
else
n=n+1
rstr(n) = str(ilab:i+subcount-1)
endif
endif
return
end
|
-
-
-
00.txt
408 Bytes, 下载次数: 4, 下载积分: 金钱 -5
数据
|