C语言调试 exe 中的 0x0122177d 处未处理的异常: 0xC0000005: 写入位置 0xcdcdcdd5 时发生访问冲突
代码附上,希望各位高手能帮忙解决,感激不尽,自己是在改不出来。
#include "stdafx.h"
#include"malloc.h"
#define len sizeof(struct qa)
struct qa
{
float num;
float m;
struct qa *next;
};
void main()
{
struct qa *head1,*head2,*headh,*p1,*p2,*ph;
struct qa *pt,*p;
int x,m,n,t,i;
char a,b,c;
pt=p=(struct qa *)malloc(len);
p1=pt;
head1=p1;
printf("输入多项式1非零系数个数");
scanf("%d",&n);
printf("输入多项式1");
for(i=0;i<n;i++)
{
scanf("%c%d%c%d%c",&a,&p1->num,&b,&p1->m,&c);
pt=(struct qa *)malloc(len);
p1->next=pt;
p1=p1->next;
}
p1->next=NULL;
pt=(struct qa *)malloc(len);
p2=pt;
head2=p2;
printf("输入多项式2非零系数个数");
scanf("%d",&n);
printf("输入多项式2");
for(i=0;i<n;i++)
{
scanf("%c%d%c%d%c",&a,&p2->num,&b,&p2->m,&c);
pt=(struct qa *)malloc(len);
p2->next=pt;
p2=p2->next;
}
p2->next=NULL;
pt=(struct qa *)malloc(len);
ph=pt;
headh=ph;
p1=head1;
p2=head2;
while(p1&&p2)
{
if(p1->m<p2->m)
{
ph->num=p1->num;
ph->m=p1->m;
pt=(struct qa *)malloc(len);
ph->next=pt;
ph=ph->next;
p1=p1->next;
continue;
}
if(p1->m>p2->m)
{
ph->num=p2->num;
ph->m=p2->m;
pt=(struct qa *)malloc(len);
ph->next=pt;
ph=ph->next;
p2=p2->next;
continue;
}
if(p1->m==p2->m)
{
if(p1->num+p2->num!=0)
{
ph->num=p1->num+p2->num;
ph->m=p1->m;
pt=(struct qa *)malloc(len);
ph=ph->next;
p1=p1->next;
p2=p2->next;
}
else
{
p1=p1->next;
p2=p2->next;
}
}
if(p1)
ph->next=p1;
if(p2)
ph->next=p2;
for(ph=headh;ph!=NULL;ph=ph->next)
{
printf("(%f,%f)",ph->num,ph->m);
}
}