我想在char数组中存储一个字符串我试图使用memcpy()
但是我得到segmentation fault
。有人可以解释原因吗?这可能是正确的做法。
使用char * name;
或char name[100];
?
#include <stdio.h>
struct A
{
char * name;
};
typedef struct A A ;
int main()
{
A *a;
memcpy(a->name,"hello",sizeof(A));
printf("The value of name is %s",a->name);
return 0;
}
答案 0 :(得分:0)
您必须为结构及其成员分配内存,然后才能在其中复制数据。
A *a = malloc(sizeof(A));
a->name=malloc(100); //change the size other then 100 what ever you want.
答案 1 :(得分:0)
首先,您要问两个问题。你应该阅读一点here,以便了解如何提出好的问题并获得好的答案。
您因为没有为变量name
分配内存而导致分段错误。根据您提供的代码和描述解决此问题的最快方法是在声明中使用char name[100]
。请记住,这不是唯一可行的方法。这取决于你在做什么。
struct A
{
char name[100];
};
然后你必须为你声明的A *a
指针分配内存。更好的方法是使用普通变量A a
,然后使用点操作符访问该成员(不确定这是否真的是一个操作符,但此刻不会想到正确的单词)。一个简单的片段是:
...
A a;
memcpy(a.name, "hello", 6);
printf("The value of name is %s",a.name);
...
一些文档不会造成伤害:memcpy()