爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3571|回复: 6

[求助] 请教有关整型、字符型组合的不规则数组的读法

[复制链接]

新浪微博达人勋

发表于 2013-8-3 18:05:48 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
要读个txt文件,里面有整型变量,也有字符型变量,而且行列还不是规则的。
我试着定义成字符型数组,但里面的字符“/”、“=”却读不出来。悲剧了。。。。
难道由于他们是运算字符?
另外还由于有的行是6列,有的是7列,不规则数组。所以读的时候总报错。
怎么解决呢?

txt如下:

19999 69911 999// 333XX 9999 =
19999 999// 333XX 9999 =  
19999 69901 999// 333XX 9999 20235 =
19999 69901 999// 333XX 9999 =
19999 60191 999// 333XX 9999 20251 =
19999 69971 999// 333XX 9999 20244 =
19999 60401 999// 333XX 9999 =
19999 60021 999// 333XX 9999 =
19999 60391 999// 333XX 9999 20242 =
19999 999// 333XX 9999 20240 =
19999 60071 999// 333XX 9999 20230 =
19999 60141 999// 333XX 9999 20230 =
19999 69901 999// 333XX 9999 =
19999 60091 999// 333XX 9999 =
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-8-4 00:44:44 | 显示全部楼层
应该可以读出来的:

program a

implicit none
character (len=100) :: cha(14)
integer             :: i

open (10,file='a.txt',form='formatted')
  do i=1,14
    read(10,'(a)') cha(i)
    print*,cha(i)
  enddo
close(10)

end program a

执行后:
$ a.out
19999 69911 999// 333XX 9999 =                                                
                     
19999 999// 333XX 9999 =                                                      
                     
19999 69901 999// 333XX 9999 20235 =                                          
  。。。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2013-8-4 08:25:27 | 显示全部楼层
可以按照楼上的做法read出来,但是比较郁闷的是仍然没有办法对这些数据进行处理,不知道楼主希望如何处理哪些数据,对于缺少的数据希望做如何处理。这些必要信息确定之后再考虑read吧。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-8-4 13:42:28 | 显示全部楼层
本帖最后由 qxjy123 于 2013-8-4 13:46 编辑

感谢zira127  跟 深深  回复
确实能读出来了。编辑的话还不能。
我是想弄成二维字符数组。一个字符一个字符的读。
这样的话也好编辑。就是想把“/”"=""X"都弄成0

但是我在zira127的基础上修改成二维数组时。却显示读错误。
哪位大大能否在帮忙一下呢。

program a

implicit none
character (len=700) :: cha(14,47)
integer             :: i,j

open (10,file='a.txt',form='formatted')
  do i=1,14
    read(10,'(a)') (cha(i,j),j=1,47)
              if (cha(i,j).eq."/") then
      cha(i,j)=0         
        endif
        if (cha(i,j).eq."=") then
      cha(i,j)=0  
              endif
        if (cha(i,j).eq."X") then
        cha(i,j)=0                  
        endif
print*,cha(i,j)

  enddo
close(10)

end program a


密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-8-4 16:19:57 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-8-4 16:20:46 | 显示全部楼层
言深深 发表于 2013-8-4 08:25
可以按照楼上的做法read出来,但是比较郁闷的是仍然没有办法对这些数据进行处理,不知道楼主希望如何处理哪 ...

我是想弄成二维字符数组。一个字符一个字符的读。
这样的话也好编辑。就是想把“/”"=""X"都弄成0

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2013-8-4 19:29:35 | 显示全部楼层
qxjy123 发表于 2013-8-4 16:20
我是想弄成二维字符数组。一个字符一个字符的读。
这样的话也好编辑。就是想把“/”"=""X"都弄成0

可以的,论坛有一个帖子关于不同列的读法···自己搜索一下就ok了···
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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