FORTRAN 如何把txt中数据一行读成一个一维数组,并得到每个一维数组里有多少个元素?

我有几组数据,成行的放在txt里,不知道每行具体有多少个数,只知道每行数据小于等于30个,想把每一行数赋值给一个一维数组,并知道每个一维数组有多少个元素,具体代码怎么实现... 我有几组数据,成行的放在txt里,不知道每行具体有多少个数,只知道每行数据小于等于30个,想把每一行数赋值给一个一维数组,并知道每个一维数组有多少个元素,具体代码怎么实现,求大神指教 展开
 我来答
匿名用户
2020-04-22
展开全部

制作了一个数据文件,写了一段读取代码。代码在cvf6.0上编译通过。

具体的,你可以参考、修改、扩充。比如,定义一个二维数组,B(1000,0:30),第一维是行数,第二维的0单元记录一行数据总量,1到30单元记录数据。

具体思路和说明见程序注释(感叹号及紧跟的文字)。数据文件为文本格式,每行不超过30个数据,数据与数据之间以至少一个空格分隔,一行的长度不超过1000个字符(含空格)。

为保持代码结构清晰,以图片方式发上来(可编辑代码附后)。以下三张图,分别是数据文件、代码、输出结果。


可以编辑代码:

$freeform

! 从txt文本中读取数据(整数、实数)

character*1000 h,t

real*8 a(0:30)               ! 定义为双精度实数,a(0)用来记录一行的数据数量

open(1,file='ff.txt')        ! 打开数据文件

do while(.true.)             ! 循环读取各行,直到文件尾

   read(1,'(a)',iostat=io) h

   if(io.ne.0) exit

   a=0

   do i=1,30

      nstart=verify(h,' ')   ! 定位数据起始点

      t=h(nstart:)           ! 用t临时存储并从中读取

      nend=index(t,' ')      ! 定位数据结束点

      a(0)=a(0)+1            ! a(0)用来计数,最终值就是该行数据总数

      read(t(1:nend),fmt=*) a(a(0))

      h=t(nend:)             ! 将未读取部分重新赋值给h

      if(h.eq.' ') exit

   end do

   write(*,*)                ! 打印输出该行数据

   write(*,'(1x,a,i3,a)') '本行数据有',int(a(0)),' 个'

   do i=1,a(0)

      write(*,*) a(i)

   end do

end do

end

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式