scanf(格式控制字符串, 地址表列);
scanf(”%f%f%f”,&a,&b,&c); 对
scanf("%f%f%f",a,b,c); 错 //缺少&
scanf("%d,%f\n",&a,&b);错 //不能有\n
scanf("%7.2f",&a);错 //只能写%f
//对于scanf("a=%f,b=%f,c=%f",&a,&b,&c);
1 3 2↙ 错
a=1,b=3,c=2↙ 对(逗号)
a=1 b=3 c=2↙ 错
//对于scanf("a=%f b=%f c=%f",&a,&b,&c);
a=1 b=3 c=2↙(两个空格)
//对于scanf(“a=%f: b=%f: c=%f",&a,&b,&c);
a=1 b=3 c=2↙(冒号和空格)
输入字符时,两个字符之间不需要空格或其他分隔符;
输入数字时,两个数值之间需要输入空格以区分两个数
因此输入数字,最好这么写
scanf(“%d,%d,%d",&a,&b,&c);
非常重要:
scanf(“%d",&a);//输入一个数字时候没啥问题
scanf(“%c",&a);//就有问题了,会把回车也读进去,解决方法1.加个过滤掉回车的条件ASCII..2.自己加sacnf的分隔符
scanf(“%c,",&a)
。。。。于是你能发现,有时候自定义分割号,能够解决好多莫名其妙的错误!
新加注意点:
**scanf对于float类型必须用%f,double必须用%lf
对于scanf,情况就完全不同了,它接受指针,这里没有类似的类型提升。(通过指针)向float存储和向double存储大不一样,因此,scanf区别%f和%lf。**