-2

我正在尝试将结构的 char 数组字段的值赋予另一个结构数组的元素。

struct Node {
   char template_id[6];
};
struct Node1
{
   char *template_id;
}
void main()
{ 
   Node1 *temp;
   temp_counter=0;
   temp=malloc(5*sizeof(Node1));
   temp[temp_counter].template_id=cur_node->template_id; //getting seq error here
} 

尝试了以下方法:

strcpy(temp[temp_counter].template_id,cur_node->template_id);
strncpy(temp[temp_counter].template_id,cur_node->template_id,6);

还是seq错误。 cur_node在不同的地方初始化,没关系。尝试了以下方法:

temp[temp_counter].template_id="hello"; // It works though
4

2 回答 2

0

尝试将分配的内存类型转换为 Node 类型。并验证是否使用 NULL 检查分配了内存。

temp=(Node1*) malloc(5*sizeof(Node1))
if (temp==NULL) exit (1)
于 2013-11-04T23:46:57.137 回答
0

我猜这个cur_node变量没有很好的定义。你应该发布它的定义。请注意,当您使用strcpyor时,strncpy您必须确保目标指针指向能够包含字符串的正确内存区域。例如,您可以通过调用malloc.

但是,如果cur_node定义良好,您的代码在这两种情况下都有效。

#include <stdio.h>
#define SIZE_TEMPLATE 6 
struct Node {
char template_id[SIZE_TEMPLAtE];
};
struct Node1
{
char *template_id;
}; 

void main()
{ struct Node1 *temp;
  struct Node cur_node;
  int temp_counter=0;
  memset(&cur_node, 0, SIZE_TEMPLATE); 
  strncpy(cur_node.template_id, "HI", 2); 
  temp=malloc(5*sizeof( struct Node1));
  temp[temp_counter].template_id=cur_node.template_id;
  puts(temp[temp_counter].template_id);
  temp[temp_counter].template_id= malloc(SIZE_TEMPLATE* sizeof(char));
  strcpy(temp[temp_counter].template_id,cur_node.template_id);
  puts(temp[temp_counter].template_id);
} 

输出 :

HI
HI
于 2013-11-05T00:09:22.353 回答