24小时热门版块排行榜    

查看: 2001  |  回复: 6

寒江垂钓

新虫 (初入文坛)

[求助] fortran中如何处理字符和数据混合的文件

有一数据文件如下:
  edge
  [
    source 8
    target 6
  ]
edge
  [
    source 8
    target 7
  ]

……………………
我想把这里面的数字读出来放到一个二维数组里面。
请各位大侠指教
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Carpathia

银虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
假设有N组数据:
character(len=6):: ch
integer:: data(2,N)
do i=1,N
    read(11,*)
    read(11,*)
    read(11,'(A,I)')ch,data(1,i)
    read(11,'(A,I)')ch,data(2,i)
    read(11,*)
enddo
如果不确定有多少组数据,先用eof函数得到N的值,然后用动态数组存储
追求理想的道路上东张西望
2楼2012-05-09 18:37:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

寒江垂钓

新虫 (初入文坛)

总共有6594组数据,我执行是出错了。
foortl:severe(64):input conversion srror,unit 15,file …………,搞不懂那里的问题……
3楼2012-05-09 20:27:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
引用回帖:
2楼: Originally posted by Carpathia at 2012-05-09 18:37:37:
假设有N组数据:
character(len=6):: ch
integer:: data(2,N)
do i=1,N
    read(11,*)
    read(11,*)
    read(11,'(A,I)')ch,data(1,i)
    read(11,'(A,I)')ch,data(2,i)
    read(11,*)
enddo
如果 ...

这个代码是有问题的,因为 '(A,I)' 的编译不会通过,因为 I 的长度不确定

如果数据就如上这么有规律,自然很好办,直接把 source 和 target 直接从读入的行中干掉就可以了……
4楼2012-05-09 23:10:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

supersunyan

金虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
可以利用格式T跳过字符的读入,只读入数据
如read(11,"(T20,I5)" i,可以从第21个位置读取整型数据的,你试试。。。
默默奋斗,实现梦想
5楼2012-05-10 00:10:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

supersunyan

金虫 (正式写手)

不好意思,点错了一个符号,那个头像是没有的
默默奋斗,实现梦想
6楼2012-05-10 00:11:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

寒江垂钓

新虫 (初入文坛)

呵呵,谢谢各位大侠,解决了
7楼2012-05-10 17:00:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 寒江垂钓 的主题更新
信息提示
请填处理意见