Fortran将值分配给2dim数组的元素-ICHAR

问题描述 投票:-2回答:1

我有一个排名为第二(矩阵)的数组a(i,j),其每个元素都是ASCII字符,例如A&^等。当我要翻译时将数组元素转换为其整数代码,例如b(i,j)=ichar('a(i,j)'),我得到以下Error: Argument of ICHAR at (1) must be of length one,这很奇怪,因为每个a(i,j)是单个ASCII字符。我可以执行以下操作(让a(1,2)为A):y=a(1,2)z=ichar('y'),(y = A,z = 121),但是随后我松开了数组结构,因为当我尝试打印出[ C0](编译后),我得到b(1,2)=zProgram received signal SIGSEGV: Segmentation fault - invalid memory reference.Backtrace for this error:等等(我有#0 0x7f301bac08da

如何形成integer, dimension(:,:), allocatable :: b,以及如何处理b(i,j)=ichar('a(i,j)')的选定元素,以便能够在程序中进行进一步的计算?

我需要b(i,j)的数组结构,因为a(i,j)具有数百个列和行,并且因为我想在进一步操作期间将b(i,j)与a(i,j)相关联b(i,j)个元素的集合。即使有可能,切换到“长一个”也很笨拙。

arrays char fortran rank
1个回答
0
投票

写作时

b(i,j)

您正在将字符串b(i,j)=ichar('a(i,j)') 传递给函数a(i,j),该函数只需要一个ichar。如果character是字符矩阵,则必须将其条目之一的值传递给a,如[]所示:

ichar
© www.soinside.com 2019 - 2024. All rights reserved.