繁体   English   中英

如何在结构化文本中将其存入二维数组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM