我只想将带有可变行的两列文本文件读入数组。文本文件的第一列是以秒为单位的时间,第二列是温度。像这样:
1.1 10
2.1 20
3.2 30
4.2 40
5.3 50
6.3 60
7.4 70
以下是我编写的代码:
模块 myData
输入 line_info
即时的
真实的::温度
端型
类型数据链路
类型(line_info)::time_temp
类型(数据链路),指针::下一个
端型
类型(line_info),可分配 :: FileInfoArr(:)
端模块
程序控制台1
使用我的数据
隐式无
!变量
类型(line_info),可分配 :: time_temp_arr(:)
!real,allocatable :: File2Arr(:)
字符 (len=80) :: FileFullName="C:\t.txt"
调用 File2Arr(FileFullName,time_temp_arr)
结束程序控制台1
子程序 File2Arr(FileFullName,InfoArray)
使用我的数据
字符 (len=80) :: FileFullName
类型(line_info),可分配的 :: InfoArray(:)
类型(数据链路),指针 :: 头
类型(数据链路),指针 :: p
整数误差,大小,我
逻辑活着
!检查文件是否存在
查询(文件=文件全名,存在=活着)
如果(活着==0)那么
write(*,*) FileFullName, "不存在。"
停止
万一
!使用指针读取文件
打开(10,文件=文件全名,状态=“旧”,iostat=错误)
如果(错误/=0)那么
write(*,*) "打开文件失败!"
停止
万一
分配(头)
无效(头%下一个)
p=>头
大小=0
!read(10,"(A80)") tempstr
做while(.true.)
读取(10,fmt=*,iostat=error)p%time_temp
如果(错误/=0)退出
尺寸=尺寸+1
分配(p%next,stat=error)!添加下一行
如果(错误/=0)那么
写(*,*)“内存不足!”
停止
万一
p=>p%下一个
无效(p%next)
结束做
!将链接信息保存到数组中
分配(信息数组(大小))
p=>头
我=0
做while(关联(p%next))
我=我+1
InfoArray(i)=p%time_temp
p=>p%下一个
!write(*,*) FileInfoArr(i)%time, FileInfoArr(i)%temp
结束做
结束子程序
当我编译它时,我得到了这个:
错误 #8055:该过程有一个虚拟参数,该参数具有 ALLOCATABLE、ASYNCHRONOUS、OPTIONAL、POINTER、TARGET、VALUE 或 VOLATILE 属性。原始源中缺少必需的显式接口。[TIME_TEMP_ARR]
有关如何解决此错误的任何想法,感谢您的帮助。