关于strcpy的争论

时间:2016-05-16 18:20:37

标签: c pointers strcpy

所以,我正在研究二叉树,我需要将信息从一个节点移动到另一个节点(结构)。问题是我有这个函数使用 strcpy 将名称和姓氏从一个节点复制到另一个节点(都作为指针发送),当我尝试在程序中运行该部分代码时,它崩溃了。

以下是复制信息的功能(必须将信息从 nodo2 复制到 nodo1 ):

void MoverDatos(Tarbol *nodo1, Tarbol *nodo2)
{
    strcpy((*nodo1)->appat, (*nodo2)->appat);
    strcpy((*nodo1)->apmat, (*nodo2)->apmat);
    strcpy((*nodo1)->nombre, (*nodo2)->nombre);
    (*nodo1)->matr=(*nodo2)->matr;
}

由于它没有那样工作,我尝试使用这个:

void MoverDatos(Tarbol *nodo1, Tarbol *nodo2)
{
    char cad1[20];
    char cad2[20];
    char cad3[20];

    strcpy(cad1, (*nodo2)->appat);
    strcpy(cad2, (*nodo2)->apmat);
    strcpy(cad3, (*nodo2)->nombre); 

    strcpy((*nodo1)->appat, cad1);
    strcpy((*nodo1)->apmat, cad2);
    strcpy((*nodo1)->nombre, cad3);
    (*nodo1)->matr=(*nodo2)->matr;
}

但它也没有用。我不知道我是不是以正确的方式设置参数,或者我是否需要使用其他函数,所以任何帮助或消化都会很棒。提前谢谢。

它使用这些参数进行编译。我没有收到任何错误消息,只是崩溃并说“program.exe已停止工作”

这是我正在使用的结构:

typedef struct _tdato
{
    long matr;
    char nombre[20];
    char appat[20];
    char apmat[20];
    struct _tdato *sig;
    struct _tdato *ant;
    struct _tdato *padre=NULL;
}Tdato;

typedef Tdato *Tarbol;

当我试图将 char [] 复制到nodo1时崩溃了。

0 个答案:

没有答案