gpt4 book ai didi

fortran - 缺少子程序的显式接口(interface)

转载 作者:行者123 更新时间:2023-12-04 02:54:51 26 4
gpt4 key购买 nike

我只想将一个包含可变行的两列文本文件读入一个数组。文本文件的第一列是以秒为单位的时间,第二列是温度。就像这样:

    1.1 10
2.1 20
3.2 30
4.2 40
5.3 50
6.3 60
7.4 70

下面是我写的代码:

module myData    type line_info        real :: time        real :: temp    end type    type datalink        type(line_info) :: time_temp        type(datalink), pointer :: next    end type    type(line_info), allocatable :: FileInfoArr(:)end moduleprogram Console1    use myData    implicit none    ! Variables    type(line_info),allocatable :: time_temp_arr(:)    !real,allocatable :: File2Arr(:)    character (len=80) :: FileFullName="C:\t.txt"           call File2Arr(FileFullName,time_temp_arr)   End Program Console1Subroutine File2Arr(FileFullName,InfoArray)    use myData    character (len=80) :: FileFullName    type(line_info),allocatable :: InfoArray(:)    type(datalink), pointer :: head    type(datalink), pointer :: p    integer error,size,i    logical alive      ! check if file exists    inquire(file=FileFullName, exist=alive)    if(alive==0) then        write(*,*) FileFullName, "doesn't exist."        stop    end if    ! read file using pointer       open(10, file=FileFullName, status="old", iostat=error)    if(error/=0) then        write(*,*) "open file fail!"        stop    end if    allocate(head)    nullify(head%next)    p=>head    size=0    !read(10,"(A80)") tempstr    do while(.true.)        read(10, fmt=*, iostat=error) p%time_temp        if(error/=0) exit        size=size+1        allocate(p%next, stat=error) ! add next line        if(error/=0) then            write(*,*) "Out of memory!"            stop        end if              p=>p%next        nullify(p%next)    end do    !save link info into an array    allocate(InfoArray(size))    p=>head    i=0    do while(associated(p%next))      i=i+1      InfoArray(i)=p%time_temp      p=>p%next       !write(*,*) FileInfoArr(i)%time, FileInfoArr(i)%temp    end do End Subroutine

当我编译它时,我得到了这个:

error #8055: The procedure has a dummy argument that has the ALLOCATABLE, ASYNCHRONOUS, OPTIONAL, POINTER, TARGET, VALUE or VOLATILE attribute. Required explicit interface is missing from original source. [TIME_TEMP_ARR]

关于如何修复此错误的任何想法,感谢您的帮助。

最佳答案

将您的子例程 File2Arr 放入模块 MyData 中(并删除该子例程中的 use mydata 行)。它为我编译并运行。

关于fortran - 缺少子程序的显式接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16881363/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com