精慕门2223628
2018-01-01 16:26
那个第二个数咋回事
看样子是内存溢出了,请贴代码
代码这么写
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; }
Linux C语言结构体
118294 学习 · 162 问题
相似问题