回 帖 发 新 帖 刷新版面

主题:求助,链表的问题,帮我看看咋回事啊

CityList.exe 中的 0x63b56af2 (msvcr90d.dll) 处未处理的异常: 0xC0000005: 写入位置 0x00000000 时发生访问冲突
为什么会这样?

struct LinkList *create()
{
    struct LinkList *head;
    struct LinkList *p1,*p2;
    n=0;
    p1=p2=(struct LinkList *) malloc (len);
    scanf("%s,%d,%d",&p1->cityname,&p1->locx,&p1->locy);
    head=NULL;
    while(p1->locx!=-1)
    {
        n=n+1;
        if(n==1)head=p1;
        else p2->next=p1;
        p2=p1;
        p1=(struct LinkList*)malloc(len);
        scanf("%s,%d,%d",&p1->cityname,&p1->locx,&p1->locy);
    }
    p2->next=NULL;
    return(head);
}


void main()
{
    struct LinkList *head,*add;
    int m=0,x,y,k;
    float D;
    char city[40];
    char nam[40];
    Welcome();
    scanf("%d",m);
    while(m!=1)
    {
        printf("请先输入城市信息\n");
        Welcome();
        scanf("%d",m);
    }
    if(m==1)
    {
        head=create();//就是运行到这里就出现上面的错误
    }

回复列表 (共2个回复)

沙发

这个最好不要用肉眼来分析,加上调试器调试你的程序。

提示的意思是说你访问了一个指针为NULL,好比这样:

int *p = NULL;
*p = 1;

这样就会出现上面的错误了。

希望对你有帮助。

板凳

int m;
scanf("%d",m);
你觉得对吗?
scanf()的第二个参数必须是地址。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册