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

来源:5-2 Linux C 动态数据结构-动态链表

精慕门2223628

2018-01-01 16:26

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

写回答 关注

5回答

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

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

    精慕门222...

    大神发上去了

    2018-01-02 23:10:54

    共 1 条回复 >

  • 金大佛爷
    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用什么分隔符,你明白了没有


    金大佛爷 回复精慕门222...

    这个问题以前也没关注过,你提出来后我也学习了,以后请踊跃提问

    2018-01-04 21:31:51

    共 2 条回复 >

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

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

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

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

    精慕门222...

    为什么用逗号,感觉输入多个时直接%d%d就行了

    2018-01-03 00:53:04

    共 2 条回复 >

  • 精慕门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;
    }


Linux C语言结构体

C语言的深入,帮助小伙伴们进一步的理解C语言,赶紧看过来

118294 学习 · 162 问题

查看课程

相似问题