那个第二个数咋回事
看样子是内存溢出了,请贴代码
代码这么写
scanf("%d,%d",&p1->price,&p1->atk);
录入就得
100,100
而代码这么写
scanf("%d %d",&p1->price,&p1->atk);
录入就得
100 100
主要看scanf用什么分隔符,你明白了没有
那么改成%d%d,就可以直接输入 100 100了吧
哦,我想复杂了,scanf输入应该是100逗号100,不是100空格100,因为写的是%d,%d,因此是用逗号分隔,此时用其他分隔符会导致输入错误
#include <stdio.h>
#include <malloc.h>
struct weapon
{
int price;
int atk;
struct weapon * next;
};
struct weapon * creat()
{
struct weapon * head;
struct weapon * p1,*p2;
int n=0;
p1=p2=(struct weapon *)malloc(sizeof(struct weapon));
scanf("%d,%d",&p1->price,&p1->atk);
head=NULL;
while(p1->price!=0)
{
n++;
if(n==1)
{
head=p1;
}
else
{
p2->next=p1;
}
p2=p1;
p1=(struct weapon*)malloc(sizeof(struct weapon));
scanf("%d,%d",&p1->price,&p1->atk);
}
p2->next=NULL;
return (head);
}
int main(void)
{
struct weapon *p;
p=creat();
printf("%d,%d",p->price,p->atk);
return 0;
}