包含节点的简单C编程代码运行,但在代码块上创建错误

包含节点的简单C编程代码运行,但在代码块上创建错误,c,nodes,codeblocks,C,Nodes,Codeblocks,//该程序创建一个结构节点,其中包含两个指针变量、一个机场和到另一个节点的链接。它只是连接多伦多、迈阿密和波士顿机场,并通过一个while循环打印出来。代码可以工作,但我得到point.exe停止工作。我拍了一张照片 #包括 #包括 #包括 类型定义结构节点{ char*机场[4]; 结构节点*链接; }诺德斯; int main(){ nodez*J,*K; J=malloc(sizeof(nodez)); 如果(J==NULL){ 返回1; } strcpy(J->机场,“TOR”); J-

//该程序创建一个结构节点,其中包含两个指针变量、一个机场和到另一个节点的链接。它只是连接多伦多、迈阿密和波士顿机场,并通过一个while循环打印出来。代码可以工作,但我得到point.exe停止工作。我拍了一张照片

#包括
#包括
#包括
类型定义结构节点{
char*机场[4];
结构节点*链接;
}诺德斯;
int main(){
nodez*J,*K;
J=malloc(sizeof(nodez));
如果(J==NULL){
返回1;
}
strcpy(J->机场,“TOR”);
J->LINK=malloc(sizeof(nodez));
如果(J->LINK==NULL){
返回1;
}
strcpy(J->LINK->AIRPORT,“MIA”);
J->LINK->LINK=malloc(sizeof(nodez));
如果(J->LINK->LINK==NULL){
返回1;
}
strcpy(J->LINK->LINK->AIRPORT,“BOS”);
nodez*电流=J;
while(当前){
printf(“%s\n”,当前->机场);
当前=当前->链接;
}
返回0;
}

下面是我得到的图片

nodez结构的
AIRPORT
成员应定义为
char AIRPORT[4]
,按照当前的定义,它是一个由4个指针组成的数组,指向
char
。编译器生成不应忽略的警告

此外,您构建了一个链接节点列表,但忘记了将最后一个节点的
链接设置为
NULL
malloc()


通过设置
J->LINK->LINK->LINK=NULL来修复strcpy()

strcpy(J->AIRPORT,“TOR”)
-
J->AIRPORT
不是
char
数组。这需要
char*AIRPORT[4]-->
char机场[4]但在追踪链接时也要非常小心。在链表中,您应该在继续运行之前检查每个链接指针。而且格式不正确的代码很难阅读。请告诉我格式设置是因为这里的界面有问题,而不是您如何设置
if
语句的格式。另外,您应该将
BOS
之后的节点设置为
null
0
您应该明确了解如何使用调试器来调查正在发生的事情。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct node{
    char * AIRPORT[4];
    struct node * LINK;

} nodez;

int main (){
    nodez *J,*K;
    J = malloc(sizeof(nodez));
    if (J == NULL){
        return 1;

    }
    strcpy(J->AIRPORT, "TOR");
    J->LINK = malloc(sizeof(nodez));
    if (J -> LINK == NULL){
        return 1;

    }
    strcpy(J->LINK->AIRPORT, "MIA");
    J->LINK->LINK = malloc(sizeof(nodez));
    if (J -> LINK -> LINK == NULL){
        return 1;

    }
    strcpy(J->LINK-> LINK -> AIRPORT, "BOS");

    nodez *current = J;
    while (current){
        printf("%s\n", current -> AIRPORT);
        current = current -> LINK;

    }
    return 0;
}