这似乎是一个重复的问题,但我搜索了 stackoverflow 关于这一点的问题,并且非像我的问题(我认为)
我有两个结构变量,每个变量都有自己的指向 char 的指针,当我尝试从一个变量的字符串复制到另一个变量的字符串时,没有任何反应,尽管没有出现错误,只是警告
implicit declaration of function strcpy
incompatible implicit declaration of built-in function 'strcpy'
我从 stackoverflow 上的一些问题中读到,你最好使用 strdup() 函数而不是 strcpy() 但当我这样做时,我遇到了错误
too many arguments to function 'strdup'
我读到 strcpy() 存在一个称为“段错误”的问题,我知道它与内存分配有关,但我不完全理解它到底是什么,也不知道这是否是我的代码的问题?
这是我的代码
struct p
{
char *name;
struct p *next;
};
struct p *ptrary[10];
int main(void)
{
struct p p,q;
p.name="xyz";
p.next=NULL;
ptrary[0]=&p;
strdup(q.name,p.name);
ptrary[1]=&q;
printf("%s\n",ptrary[1]->name);
return 0;
}
那么问题是什么以及如何解决它?
最佳答案
strdup() 仅接受一个参数;它 malloc 并返回包含重复字符串的新堆内存块。 (参见https://stackoverflow.com/questions/252782/strdup-what-does-it-do-in-c)
这可能也指出了您之前遇到的问题 - 您是否记得为 q 分配空间以将 p 的内容复制到其中?
关于c - strcpy() 将字符串从一个结构复制到另一个结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21072263/