使用strcpy通过指针运算符将字符串复制到结构的成员
我试图使用strcpy为作为结构成员的char数组设置值。如果可能的话,我想使用指针操作符来实现这一点使用strcpy通过指针运算符将字符串复制到结构的成员,c,string,pointers,struct,strcpy,C,String,Pointers,Struct,Strcpy,我试图使用strcpy为作为结构成员的char数组设置值。如果可能的话,我想使用指针操作符来实现这一点 struct my_struct{ char foo[15]; } *a_struct_Ptr; int main(){ strcpy(a_struct_Ptr -> foo, "test"); return 0; } 我可以编译这段代码,但当我运行它时,我会遇到一个分段错误 此外,如果我不将结构定义为指针,它似乎也可以正常工作,例如,下面的代码可以正常工作 struct m
struct my_struct{
char foo[15];
} *a_struct_Ptr;
int main(){
strcpy(a_struct_Ptr -> foo, "test");
return 0;
}
我可以编译这段代码,但当我运行它时,我会遇到一个分段错误
此外,如果我不将结构定义为指针,它似乎也可以正常工作,例如,下面的代码可以正常工作
struct my_struct{
char foo[15];
}a_struct;
int main(){
strcpy(a_struct.foo, "test");
return 0;
}
不过我希望能够用指针来实现这一点。
任何反馈都将不胜感激。谢谢正如许多人评论的那样,问题在于我没有为指向我的结构的指针分配内存 在我的strcpy语句前面加上
a_struct_Ptr = (struct my_struct *) malloc(sizeof(struct my_struct));
我能够成功地将字符串文本复制到我的_结构的char数组成员
作为良好的实践,我添加了
free(a_struct_Ptr)代码>在使用完结构之后。许多人评论的问题是,我没有为指向我的结构的指针分配内存
在我的strcpy语句前面加上
a_struct_Ptr = (struct my_struct *) malloc(sizeof(struct my_struct));
我能够成功地将字符串文本复制到我的_结构的char数组成员
作为良好的实践,我添加了free(a_struct_Ptr)代码>在结构完成后使用。因为您没有指向任何内容。你需要为它分配内存。a_struct_Ptr
不指向任何东西;它保持空值,因此您的代码很可能会崩溃。为结构分配足够的空间,您就有机会了。看起来您需要将结构定义为变量,并为该结构分配一些内存。例如:struct*my_struct=malloc(sizeof(struct my_struct));可能吧。谢谢,还有一个问题。。。这是否意味着通过显式定义结构,编译器将自动处理分配结构中定义的所有必要空间?@MattHall-是的,通过定义结构变量(相对于结构指针),内存将自动分配到堆栈上(如果是全局变量,将以不同方式分配,但仍然自动分配)。因为你没有指向任何东西。你需要为它分配内存。a_struct_Ptr
不指向任何东西;它包含NULL,因此你的代码很可能会崩溃。为结构分配足够的空间,你就有机会了。看起来你需要将结构定义为变量,并为该结构分配一些内存。例如:struct*my_struct=malloc(sizeof(struct my_struct));可能。谢谢,还有一个问题……这是否意味着通过显式定义结构,编译器将自动处理分配结构中定义的所有必要空间?@MattHall-是的,通过定义结构变量(相对于结构指针),则会在堆栈上自动分配内存(如果是全局变量,则会以不同方式分配,但仍会自动分配)。我可能会在free
中添加一个选项,以便OP知道在不再需要时释放内存。很高兴这有帮助!我可能会在free
中添加一个选项,以便OP知道在不再需要时释放内存。很高兴这有帮助!