【发布时间】:2014-03-11 21:59:16
【问题描述】:
我正在尝试使用二维数组将坐标绘制到地图上。坐标数据已由用户输入并保存在结构中。这是从我的主程序中取出的代码的 sn-p。
#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) 则元素 map[4][ 2] 将保持这个显示和'x'。
【问题讨论】:
-
请使用正确的缩进!
-
问自己一个问题 -
mg是什么类型? -
@zoska 我假设 mg 是 int 类型,存储在结构数组中。你有什么建议?
-
mg的类型是“3 个struct coord的数组” - 它没有x成员或y成员,所以mg.x或mg.y没有存在。数组中的每个单独元素都有这样的成员,所以mg[i].x或mg[i].y只要0 <= i < 3就可以了...你在代码的其他部分有这个权利(例如mg[loop].x),所以我不确定你想让map[mg.y][mg.x]成为什么...... -
我建议
mg没有x或y属性。为什么要它,因为它是一个数组?我的问题从哪里来 - 当您将mg声明为struct coord mg[3]时,它是什么类型
标签: c arrays struct multidimensional-array