2014-01-12 135 views
-2

似乎这是一个重复的问题,但我搜索计算器的问题,关于这一点和非就像是我的问题(我认为)的strcpy()从一个结构复制到另一个字符串

我有2一个struct每个人都有自己的字符指针变量,当我试图从一个变量的字符串复制到另一个变量的字符串,什么都没有发生,但不会出现任何错误,只是警告

implicit declaration of function strcpy 
incompatible implicit declaration of built-in function 'strcpy' 

我从计算器一些问题阅读你最好使用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; 
} 

所以有什么问题,我该怎么解决呢?

+3

添加'#包括'之前的代码的其余部分(并确保它在一个行本身)。 'strdup'不是标准的,但典型的用法是:'q.name = strdup(p.name);'。 –

+1

您是否尝试阅读函数的文档?我敢打赌,它会告诉你什么头文件你必须包括使用它们。 – Barmar

+0

@JerryCoffin q.name = strdup(p.name);与我一起工作,而不包括新库 – Salahuddin

回答

1

变化

strdup(q.name,p.name); 

q.name = strdup(p.name); 

see man page of strdup for further details。 strdup()函数返回一个指向新字符串的指针。

全码:

#include <stdio.h> 
#include <string.h> 
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; 

q.name = strdup(p.name); 
ptrary[1]=&q; 

printf("%s\n",ptrary[1]->name); 
return 0; 
} 
+0

是的,它与我合作,但与strcpy的问题? – Salahuddin

+1

为什么strcpy不能完成这项工作? – Salahuddin

+0

malloc'q.name'然后使用'strcpy' – sujin

相关问题