问答详情
源自:5-2 Linux C 动态数据结构-动态链表

那个第二个数atk怎么不一样

http://img3.mukewang.com/5a49f02f0001a86110270812.jpg那个第二个数咋回事

提问者:精慕门2223628 2018-01-01 16:26

个回答

  • 金大佛爷
    2018-01-02 23:01:09
    已采纳

    看样子是内存溢出了,请贴代码

  • 金大佛爷
    2018-01-03 22:23:11

    代码这么写

    scanf("%d,%d",&p1->price,&p1->atk);

    录入就得

    100,100

    而代码这么写

    scanf("%d %d",&p1->price,&p1->atk);

    录入就得

    100 100

    主要看scanf用什么分隔符,你明白了没有


  • 精慕门2223628
    2018-01-03 00:54:16

    那么改成%d%d,就可以直接输入 100 100了吧

  • 金大佛爷
    2018-01-03 00:01:04

    哦,我想复杂了,scanf输入应该是100逗号100,不是100空格100,因为写的是%d,%d,因此是用逗号分隔,此时用其他分隔符会导致输入错误

  • 精慕门2223628
    2018-01-02 23:09:29

    #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;
    }