char数组到char *

时间:2013-11-04 23:39:30

标签: c

我试图将struct的char数组字段的值赋给另一个struct数组的元素。

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

2 个答案:

答案 0 :(得分:0)

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

temp=(Node1*) malloc(5*sizeof(Node1))
if (temp==NULL) exit (1)

答案 1 :(得分:0)

我猜cur_node变量定义不明确。你应该发布它的定义。 请注意,当您使用strcpystrncpy时,必须确保目标指针指向能够包含字符串的正确内存区域。例如,您可以通过调用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);
} 

OutPut:

HI
HI