Fortran Coder

查看: 8493|回复: 2
打印 上一主题 下一主题

[子程序] 调用子程序为读取数据为动态数组赋值报错

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
22 元
贡献
7 点
跳转到指定楼层
楼主
发表于 2019-5-29 14:48:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我在调用子程序读入数据赋值到动态数组中时,一赋值就报 访问冲突,一直搞不懂问题的原因是什么,求助


[Fortran] 纯文本查看 复制代码
program main 
  implicit none
  character,allocatable:: A(:,:)
  integer:: m,n,nx,ny
  character(len=200):: filename
  integer:: i,j,iunit,mbc
  filename="d:\2.txt"
  nx=2
  ny=2
  allocate(A(nx,ny))
  call read_txt(A,1,filename,m,n,nx,ny)
  
  print*,A
  end program

subroutine  read_txt(input,iunit,filename,m,n,nx,ny)
  implicit none
  !函数内部变量声明
  integer:: iunit,m,n
  integer:: nx,ny
  character(len=200):: filename
  character(len=200):: input(nx,ny)
  !局部变量
  integer:: i,j
  character(len=200):: line
  character,allocatable:: temp(:)
  
  open(unit=iunit,file=filename)
  read(iunit,"(a)")line
  read(line,*)m,n
  
  allocate(temp(n))
  do i=1,m
    read(iunit,"(a)")line
    read(line,*)(temp(j),j=1,n)
    do j=1,n
      !print*,temp(j)
      input(i,j)=temp(j)
    enddo
  enddo
  close(iunit)
  end subroutine




QQ图片20190529144606.png (12.16 KB, 下载次数: 200)

QQ图片20190529144606.png
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

101

帖子

0

主题

0

精华

大师

F 币
670 元
贡献
299 点

规矩勋章元老勋章新人勋章

沙发
发表于 2019-5-29 15:20:16 | 只看该作者
实参的字符串长度是1
character,allocatable:: A(:,:)
虚参的字符串长度是200
character(len=200):: input(nx,ny)

自然就错了。

另外,你为什么先读到 temp 里?不能直接读到 input 里吗?
[Fortran] 纯文本查看 复制代码
subroutine  read_txt(input,iunit,filename,m,n,nx,ny)
  implicit none
  !函数内部变量声明
  integer:: iunit,m,n
  integer:: nx,ny,i
  character(len=200):: filename
  character:: input(nx,ny)
  !局部变量
  open(unit=iunit,file=filename)
  read(iunit,*) m,n
  do i = 1 , m
    read(iunit,*) input(i,:n)
  end do  
end subroutine
天之道,损有余而补不足

2

帖子

1

主题

0

精华

新人

F 币
22 元
贡献
7 点
板凳
 楼主| 发表于 2019-5-29 15:49:00 | 只看该作者
胡文刚 发表于 2019-5-29 15:20
实参的字符串长度是1
character,allocatable:: A(:,:)
虚参的字符串长度是200

啊啊,就是这样,万分感谢,我自己马大哈了,没注意到。之前为了排除问题就先读入了temp。再次感谢!!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-23 22:50

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表