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

时间:2018-06-28 14:54:05

标签: structured-text

基本上,我在C中将这个问题描述为here(针对结构化文本)。

所以在C语言中,我可以这样做,将向量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

2 个答案:

答案 0 :(得分:0)

您是否要将c复制到a中?

对于数组,您需要两个索引,如下所示:

memcpy(ADR(a [i,0]).....

请测试。我相信这是我记得的方式,但不是我的计算机。

答案 1 :(得分: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)对其进行了测试,并且可以正常运行,但是我不知道您是否正在寻找...