fortran 数组赋值求助? 10
我有一个文件,每读取一行字符串后赋值给了line,已知文件总行数为n(n也是变量),现在想将每一行字符串赋值给数组A,就像读取第一行后A(1)=line,读取第二行时A(...
我有一个文件,每读取一行字符串后赋值给了line,已知文件总行数为n(n也是变量),现在想将每一行字符串赋值给数组A,就像读取第一行后A(1)=line,读取第二行时A(2)=line,请问数组A如何申明变量和分配空间?
character(len=200)::line
character,allocatable::A(:,:)
do i=1,n
read(3,'(A)',end=99)line
A(i,:)=line
enddo
99 stop
请问代码哪里出错,line无法赋值给A数组。 展开
character(len=200)::line
character,allocatable::A(:,:)
do i=1,n
read(3,'(A)',end=99)line
A(i,:)=line
enddo
99 stop
请问代码哪里出错,line无法赋值给A数组。 展开
2个回答
2016-08-04 · 知道合伙人生活技巧行家
关注
展开全部
第一,data是定义语句,而不是执行语句。第二,allocate(a(n,n))没有问题。第三,网上这些问题你很难搜索到,因为不好描述。别人说的很可能与你遇到的不是同一个问题。你需要有针对性的提问。以下是解答。ProgramBaidu_ThlwsImplicitNonereal::b(3,3)=(/(/1,2,1/),(/3,2,3/),(/2,3,4/)/)!//直接定义时,可以使用这样的二维数组形式。Real,allocatable::a(:,:)Allocate(a(3,3))a=reshape((/1,2,3,4,5,6,7,8,9/),(/3,3/))!//可变数组可使用reshape把一维数组形式转变为二维数组形式write(*,*)awrite(*,*)bEndProgramBaidu_Thlwsreshape函数用于把一个数组改变外形,变为另一个数组。例如上例:a=reshape((/1,2,3,4,5,6,7,8,9/),(/3,3/))把(/1,2,3,4,5,6,7,8,9/)这个1*9的一维数组,转换为(/3,3/)的数组,即3*3的数组。
追问
integer::n
character(len=200)::line
character,allocatable::A(:)
n=3250
do i=1,n
read(3,'(a)')line ! 比如,此处 line = ' 12 ADF23 09876 ' 。
A(i)=line
enddo
这段代码该如何修改呢,A(i)还是无法获取line的值
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-08-04
展开全部
character*200::line
character*200::A(10000)
n=10000
do i=1,n
read(*,'(A)',end=99)line
A(i)=line
enddo
99 stop
end
追问
character*200::A(10000)提示A最多为A(1000)
追答
在power fortran中10000无问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询