c - strcpy() 将字符串从一个结构复制到另一个结构

标签 c struct strcpy

这似乎是一个重复的问题,但我搜索了 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/

相关文章:

c++ - 如果没有嵌套,说服同事

c - 处理从 R 到 C 的字符串列表

c - linux/list.h 中 container_of 宏背后的基本原理

从数组中选择一个字符,然后替换第二个数组 - C

c - 与 strcpy 一起使用时出现段错误(核心转储)

c - 使用 strcpy 和指向字符的指针

c - SPI 在 STM32F103ZE 中读取数据为零

c - linux timeval gettimeofday printf 错误

C# - 对结构内的列表进行排序

c++ - 为什么更改 for 循环迭代顺序会增加运行时间?