Fortran Coder

标题: 新人求助关于read的问题 [打印本页]

作者: 刘大铭    时间: 2018-12-18 22:28
标题: 新人求助关于read的问题
有一个文本数据如下
(1)(2)(3)。。。。。。(100)
一行100个数,我想用数组来读取这100个数,但是因为每个数都有括号扩着,想用隐式do循环读取不太对,请问这种问题该怎么读呢?
像read(1,*)(a(i),i=1,100)这样是不行的,该怎么办呢?
谢谢啦

作者: li913    时间: 2018-12-19 09:56
1、用字符串读取整行;
2、用空格替换字符串中的括号;
3、从字符串读取数据。
[Fortran] 纯文本查看 复制代码
program test
character(512) ch
real arr(100)

open(10,...)
read(10,"(a)") ch
do i = 1, len_trim(ch)
        if(ch(i:i)=='(' .or. ch(i:i)==')') ch(i:i)=' '
end do
read(ch,*) arr
end program


作者: 刘大铭    时间: 2018-12-19 11:20
li913 发表于 2018-12-19 09:56
1、用字符串读取整行;
2、用空格替换字符串中的括号;
3、从字符串读取数据。[mw_shl_code=fortran,true]p ...

谢谢您啦,我昨天研究了一下发现也可以用隐式do循环读,可以这样写
character C
read(10,‘(....)’) ((C,ARR(I),C),i=1,100)
貌似隐式do循环的循环体是括号内的,所以我发现这样写也可以实现了。
作者: 刘大铭    时间: 2018-12-19 11:21
刘大铭 发表于 2018-12-19 11:20
谢谢您啦,我昨天研究了一下发现也可以用隐式do循环读,可以这样写
character C
read(10,‘(....)’)  ...

但不知道这种写法是不是适用于所有的编译器
作者: fcode    时间: 2018-12-19 14:45
你这样的写法是没问题,但是需要指定格式。如果数据中的格式和你的不一样,甚至每个数据的格式都不一样,就比较难办了。
比如
(3.1) (23.31123)     (335.23)




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2