今天遇到一个小学弟开始学c语言,问了一道题。java
用scanf函数输入数据,举例并分析错误缘由函数
用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。问在键盘上如何输入。测试
#include<stdio.h>code
int main()blog
{io
int a, b;class
float x, y;变量
char c1, c2;百度
scanf("a=%d b=%d",&a,&b);float
scanf("%f %e",&x,&y);
scanf("%c%c", &c1, &c2);
return 0;
}
我上机运行了下:
在控制台输入了 3 7 8.5 71.82Aa
为什莫出错??????
最后看了看莫非scanf("a=%d b=%d",&a,&b);??????????????
百度下,
scanf("输入控制符非输入控制符", 输入参数);
这种用法几乎是不用的,也建议大家永远都不要用。可是常常有人问,为何 printf 中能够有“非输出控制符”,而 scanf 中就不能够有“非输入控制符”。事实上不是不能够有,而是没有必要!下面来看一个程序:
# include <stdio.h> int main(void) { int i; scanf("i = %d", &i); printf("i = %d\n", i); return 0; }
在 printf 中,全部的“非输出控制符”都要原样输出。一样,在 scanf 中,全部的“非输入控制符”都要原样输入。因此在输入的时候i=
必需要原样输入。好比要从键盘给变量 i 赋值 123,那么必需要输入i=123
才正确,少一个都不行,不然就是错误。
因此 scanf 中%d
后面也没有必要加\n
,由于在 scanf 中\n
不起换行的做用。它不但什么做用都没有,你还要原样将它输入一遍。
因此在 scanf 的使用中必定要记住:双引号内永远都不要加“非输入控制符”。除了“输入控制符”以外,什么都不要加,不然就是自找麻烦。并且对于用户而言,确定是输入越简单越好。
因此正确输入为:
a=3 b=7
8.5 71.82Aa
测试一下下:
对于初学的同窗详细解释一下:
a=3 b=7
8.5 71.82Aa