为了账号安全,请及时绑定邮箱和手机立即绑定

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

http://img1.sycdn.imooc.com//5a49f02f0001a86110270812.jpg那个第二个数咋回事

正在回答

5 回答

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

1 回复 有任何疑惑可以回复我~
#1

精慕门2223628 提问者

大神发上去了
2018-01-02 回复 有任何疑惑可以回复我~

代码这么写

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

录入就得

100,100

而代码这么写

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

录入就得

100 100

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


0 回复 有任何疑惑可以回复我~
#1

精慕门2223628 提问者

我知道了,以前都是写空格,这次比着教程写的,哈哈哈,谢谢前辈
2018-01-03 回复 有任何疑惑可以回复我~
#2

金大佛爷 回复 精慕门2223628 提问者

这个问题以前也没关注过,你提出来后我也学习了,以后请踊跃提问
2018-01-04 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

精慕门2223628 提问者

是把逗号去了吗?
2018-01-03 回复 有任何疑惑可以回复我~
#2

精慕门2223628 提问者

为什么用逗号,感觉输入多个时直接%d%d就行了
2018-01-03 回复 有任何疑惑可以回复我~
#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;
}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信