所以,我正在研究二叉树,我需要将信息从一个节点移动到另一个节点(结构)。问题是我有这个函数使用 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时崩溃了。