从struct读取数据到2d数组c

时间:2014-03-11 21:59:17

标签: c arrays struct multidimensional-array

我试图使用二维数组将坐标绘制到地图上。用户输入坐标数据并保存在结构中。这是从我的主程序中取出的一段代码。

#include <stdio.h>
#include <stdlib.h>

char map[5][10]={
    "..........",
    "..........",
    "..........",
    "..........",
    ".........."
};

struct coord{
    int x;
    int y;
};

int loop, n, i;

struct coord mg[3];

int main(){

    for(loop=0;loop<3;loop++){
        printf("\n\nEnter MAGENTA X coordinate 0:\n");
        scanf("%d",&mg[loop].x);
        printf("\nEnter MAGENTA Y coordinate:\n");
        scanf("%d",&mg[loop].y);
    }

    printf("Struct contains:\n");

    for(loop=0;loop<3;loop++){
        printf("\tx %d,%d y\n",mg[loop].x,mg[loop].y);
    }

    /*AS SUGGESTED IN ANSWER BELOW (PAUL92),I HAVE DONE THIS BUT GET AN ERROR*/ 

    n=3;
    i=0;    

    for (i = 0; i < n; i++) {
         map[mg.y][mg.x] = 'x';
    }

    getchar();
    return(0);
}

我得到的错误是

testing.c:35:13: error: member reference base type 'struct coord [3]' is not a
  structure or union map[mg.y][mg.x] = 'x';
                         ~~^~

我想要实现的是将struct中保存的坐标分配给数组中的正确元素,即如果用户输入3(x),5(y)则元素映射[4 ] [2]将保持这个显示和&#39; x&#39;。

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解了你想要的东西,但是如果你只是想在地图上标记一个&#39; x&#39;例如,您可以迭代点:

for (int i = 0; i < n; i++) {
    map[mg.y][mg.x] = 'x';
}

其中n是点数。 当然,这是在您初始化地图之后。