![](/img/trans.png)
[英]In structured text: is it possible to write to a multi dimensional array with a single line in the cyclic code?
[英]How to memcpy into a two dimensional array in Structured Text?
基本上,我有这个问题,像在C描述下这里的结构化文本。
因此,在CI中可以这样做,将向量c复制到矩阵行a中:
int a[100][100];
int c[10][10];
int i;
for(i = 0; i<10; i++)
{
memcpy(&a[i], &c[i], sizeof(c[0]));
}
如何在结构化文本中执行此操作? 到目前为止,我的类比方法行不通。 (编译器错误:字段a的索引减少了)。
VAR
a: ARRAY[0..99,0..99] OF REAL; (*2D array*)
c : ARRAY[0..99] OF REAL; (*1D array*)
END_VAR
FOR i:=0 TO 99 DO
memcpy(ADR(a[i]), ADR(c[i]), SIZEOF(c[0]));
END_FOR
您是否正在尝试将c复制到a中?
对于数组,需要两个索引,如下所示:
memcpy(ADR(a [i,0]).....
请测试。 我相信这是我记得的方式,但不是我的计算机。
据我了解,您想将1维数组(1x99 = 99个元素)复制到99维数组(99x99 = 9801个元素)。 您可以在列的第一行(或反之亦然)中复制第一个数组(一维),在第二行中复制第二个数组……等等。
如果这是您的海豚,则可以尝试以下代码:
VAR
i: INT; //auxiliar
j: INT; //auxiliar
origin : ARRAY[0..9] OF REAL; //origin data
destiny: ARRAY[0..9,0..9] OF REAL; //destiny
END_VAR
FOR i := 0 TO 9 DO
FOR j := 0 TO 9 DO
//Copy the origin array to the first column, second, etc of destiny array
destiny[i,j] := origin[i];
END_FOR;
END_FOR;
我已经在我的计算机上(使用codesys)对其进行了测试,并且可以正常工作,但是我不知道您是否正在寻找...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.