您好,遇到一个比较急的问题,关于Fortran90的直接文件读取,希望向您请教!谢谢!

csv数据格式如下:a,b,year,month,day0.4324756287533950,0.9,1980,1,10.3428334118681960,0,1980,... csv数据格式如下:

a,b,year,month,day
0.4324756287533950 ,0.9,1980,1,1
0.3428334118681960 ,0,1980,1,2
0.7745397378446070 ,0,1980,1,3
0.8918107602794460 ,0,1980,1,4
。。。
包括表头共1828行,希望能从这个csv文件中直接读取某一行某一列的值赋给某个参数用于计算。请问应怎么做呢?
另外,为了测试,自己写了个程序来读取这个文件,但输出结果都是0,请问问题出在哪里?应如何解决呢?
代码如下
program test
implicit none
integer::i
real::a(1827)
open(1,file='aa.csv',access='direct',recl=18,action='readwrite',form='formatted')
read(1,*)
do i=1,3
write(*,*) a(i),b(i)
enddo
end program
谢谢您!
抱歉,程序real一行少打了。应为

real::a(1827),b(1827)
在下本意是用两个函数a(i),b(i)直接获取文件中对应位置的a、b值用于计算。望不吝赐教!谢谢!
展开
 我来答
匿名用户
推荐于2016-11-21
展开全部
	program test
c implicit none
integer i
real b(1827),c(1827),d(1827),e(1827)
double precision a(1827)
c open(1,file='aa.csv',access='direct',recl=99,form='formatted')
open(1,file='aa.csv',status='old')
read(1,*)
do 5 i=1,3
read(1,*)a(i),b(i),c(i),d(i),e(i)
5 continue
close(1)
do 10 i=1,3
write(*,100)a(i),b(i),c(i),d(i),e(i)
10 continue
100 format(1x,1f18.15,1f10.7,3f10.0)
end

以上为fortran77代码。调试通过,供参考。

program test
c implicit none
integer i
real b(1827),c(1827),d(1827),e(1827)
double precision a(1827)
open(1,file='aa.csv',access='direct',recl=99,form='formatted')
c open(1,file='aa.csv',status='old')
read(1,*)
do 5 i=1,3
read(1,*)a(i),b(i),c(i),d(i),e(i)
5 continue
close(1)
do 10 i=1,3
write(*,100)a(i),b(i),c(i),d(i),e(i)
10 continue
100 format(1x,1f18.15,1f10.7,3f10.0)
end
以上一样调试通过。
更多追问追答
追答
这样的数据文件,还是以顺序文件处理为宜!
追问
您好!我用自由格式(只会这个)改写后编译ok,但跑不出。forrtl:severe(59):list-direct I/O syntax error。文件本身是excel转的,应该没问题的。若顺序文件,如何用函数子程序a(i)获取文件中对应位置的a呢?谢谢!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式