24小时热门版块排行榜    

查看: 2019  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

寒江垂钓

新虫 (初入文坛)

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

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

……………………
我想把这里面的数字读出来放到一个二维数组里面。
请各位大侠指教
回复此楼
已阅   回复此楼   关注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的回帖
查看全部 7 个回答

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的回帖

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的回帖
信息提示
请填处理意见