使用 scanf 给变量赋值的问题

0

我希望用 scanf 的方式给 a,b,c 赋值,但是当运行后输入值没有线出现,之后我将 scanf 去掉直接给 a,b,c 赋值运行后是可以出现直线的。我的目的是想通过类似于 scanf 那样的方式来给 a,b,c 赋值。

#include<stdio.h>
#include<graphics.h>
int main()
{
	int a,b,c;
	scanf("%d,%d,%d",&a,&b,&c);
	initgraph(460,460);
	line(a,b,a+c,b);
	getchar();
	closegraph();
	return 0;
}
ava
用户e47a

2020-2-5

0

1. 先看 scanf 的问题,如果你写的是 "%d,%d,%d",那么你输入数据的时候,要写成 10,100,300 这种形式才能匹配,用空格分隔数字是不行的。为了更简单方便的使用 scanf 输入数据,可以考虑用 "%d%d%d" 这种形式。

  1. “没有看到直线”,不表示“没有出现直线”。事实上,如果你前面输入的数据加了逗号分隔,那么你的代码可以画出来直线。但是,后面的 getchar() 语句,获取到了 scanf 输入数据时候最后键入的“回车符”,导致 getchar() 瞬间获取到了字符,从而马上执行了 closegraph,导致你没有看到之前的运行结果。如果想实现暂停,可以考虑用 _getch() 替换掉 getchar(),就可以简单的避免 scanf() 残留回车符的问题。
ava
慢羊羊

2020-2-5

谢谢大佬!但是我还有个问题,我使用getch()以后,只有把scanf里面的逗号去掉再输入才能显示出直线。比如,在有逗号时,我输入 100,100,100 他是不会显示出直线的;而将scanf里面的逗号去掉,再输入100 100 100(中间有空格),能够显示出直线。这是为什么?  -  用户e47a  2020-2-6
注意全角逗号与半角逗号的区别。 -  慢羊羊  2020-2-6
谢谢!解决了。  -  用户e47a  2020-2-6
技术讨论社区