2012-11-05 228 views
-1

我正在进行分配。我开始与结构:指向结构的指针

struct figures_struct 
{ 
    char figure_name[130]; 
    double figure_coordinates[1000000]; 
}; 

当我从文件中读取图形的名字,我将其存储到结构如下:

strcpy(figures[i].figure_name,f_name); 

现在我要修改我的代码,需要使用动态内存。我做了:

struct figures_struct 
{ 
    char figure_name[130]; 
    double figure_coordinates[100000]; 
}; 

struct figures_struct *figures = malloc(size * sizeof(struct figures_struct)); 

现在,我该如何将图形名称存储到我的结构? figures[i].figure_name似乎没有工作。

+0

它有帮助,如果你包括什么错误,你看到什么,你已经尝试过。 –

+1

“似乎没有工作”是什么意思? 'figure [i] .figure_name'本身没有任何问题。 'strcpy(figure [i] .figure_name,f_name)'会很好地工作。 – AnT

+0

结构访问的*精确*相同的语法将工作。这两个暗示你的指数(我)永远不会超过你的维度(大小)。你的任务是否要求你可以随着时间的推移增加你分配的结构数量,因为这是一个完全不同的问题(和答案)。 – WhozCraig

回答

2

strcpy(figures[i].figure_name, f_name);

这仍然将与指针工作(如指针和数组是可以互换的在C)

+3

直到括号评论,我同意。括号内的评论(目前__指针和数组在C'_中几乎是可以互换的)并不是它继续工作的原因,而且并不完全如此。指针和数组密切相关;它们是不可互换的,特别是在内存分配的地方。然而,'strcpy()'仍然有效的原因是'figure [i]'仍然是一个结构,就像以前一样,所以同样的初始化技术也适用于结构。 –

+0

@JonathanLeffler啊我的坏话,我几乎用这个词来表示你告诉我的。 –

+2

@JonathanLeffler:也许更合适的说法是数组可以用于需要指针右值的地方。 –

0

它将立即工作作为“i”是小于“大小”。