我试图将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
答案 0 :(得分:0)
尝试将分配的内存类型转换为Node类型。并验证是否使用NULL检查分配了内存。
temp=(Node1*) malloc(5*sizeof(Node1))
if (temp==NULL) exit (1)
答案 1 :(得分:0)
我猜cur_node
变量定义不明确。你应该发布它的定义。
请注意,当您使用strcpy
或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);
}
OutPut:
HI
HI