c语言输入输出:C语言入门之输入输出(2)



  数据输入语句

  C语言数据输入也是由语句完成本节介绍从标准输入设备—键盘上输入数据scanf和getcharscanfscanf称为格式输入即按用户指定格式从键盘上把数据输入到指定变量的中

  、scanf般形式

  scanf个标准库原型在头文件“stdio.h”中和prf相同C语言也允许在使用scanf的前不必包含stdio.h文件scanf般形式为:scanf(“格式控制串”地址表列);其中格式控制作用和prf相同但不能显示非格式也就是不能显示提示地址表列中给出各变量地址地址是由地址运算符“&”后跟变量名组成例如&a,&b分别表示变量a和变量b地址这个地址就是编译系统在内存中给a,b变量分配地址在C语言中使用了地址这个概念这是和其它语言区别应该把变量值和变量地址这两个区别概念区别开来变量地址是C编译系统分配用户不必关心具体地址是多少

  变量地址和变量值关系如下:&a--->a567a为变量名567是变量&a是变量a地址在赋值表达式中给变量赋值如:a=567在赋值号左边是变量名不能写地址而scanf在本质上也是给变量赋值但要求写变量地址如&a这两者在形式上是区别&是个取地址运算符&a是个表达式其功能是求变量地址

void{
a,b,c;
prf("inputa,b,c\\n");
scanf("%d%d%d",&a,&b,&c);
prf("a=%d,b=%d,c=%d",a,b,c);
}

  注意&使用方法!

  在本例中由于scanf本身不能显示提示串故先用prf语句在屏幕上输出提示请用户输入a、b、c执行scanf语句则退出TC屏幕进入用户屏幕等待用户输入用户输入7、8、9后按下回车键此时系统又将返回TC屏幕在scanf语句格式串中由于没有非格式在“%d%d%d”的间作输入时间隔因此在输入时要用个以上空格或回车键作为每两个输入数的间间隔

  如:789

  或 

  7
  8
  9

  格式

  格式般形式为:%[*][输入数据宽度][长度]类型其中有方括号项为任选项各项意义如下:

  1.类型

  表示输入数据类型其格式符和意义下表所示

格式意义
d输入十进制整数
o输入 8进制整数
x输入十 6进制整数
u输入无符号十进制整数
f或e输入实型数(用小数形式或指数形式)
c输入单个
s输入

  2.“*”符

  用以表示该输入项读入后不赋予相应变量即跳过该输入值如scanf("%d%*d%d",&a,&b);当输入为:123时把1赋予a2被跳过3赋予b

  3.宽度

  用十进制整数指定输入宽度(即数)例如:scanf("]",&a);

  输入:

  12345678

  只把12345赋予变量a其余部分被截去又如:scanf("MM",&a,&b);

  输入:

  12345678将把1234赋予a而把5678赋予b

  4.长度

  长度格式符为l和hl表示输入长整型数据(如%ld)和双精度浮点数(如%lf)h表示输入短整型数据
使用scanf还必须注意以下几点:

  a.scanf中没有精度控制如:scanf("%5.2f",&a);是非法不能企图用此语句输入小数为2位实数

  b.scanf中要求给出变量地址如给出变量名则会出错如scanf("%d",a);是非法应改为scnaf("%d",&a);才是合法

  c.在输入多个数值数据时若格式控制串中没有非格式作输入数据的间间隔则可用空格TAB或回车作间隔C编译在碰到空格TAB回车或非法数据(如对“%d”输入“12A”时A即为非法数据)时即认为该数据结束

  d.在输入数据时若格式控制串中无非格式则认为所有输入均为有效例如:
scanf("%c%c%c",&a,&b,&c);

  输入为:

  def

  则把’d’赋予a,’f’赋予b,’e’赋予c只有当输入为:

  def

  时才能把’d’赋于a,’e’赋予b,’f’赋予c如果在格式控制中加入空格作为间隔如scanf("%c%c%c",&a,&b,&c);则输入时各数据的间可加空格




void{
chara,b;
prf("inputcharactera,b\\n");
scanf("%c%c",&a,&b);
prf("%c%c\\n",a,b);
}
scanf("’C14F14%c%c",&a,&b);
prf("%c%c\\n",a,b);

  由于scanf"%c%c"中没有空格输入MN结果输出只有M

  而输入改为MN时则可输出MN两见下面输入运行情况:



inputcharactera,b  
MN
MN

void{
chara,b;
prf("inputcharactera,b\\n");
scanf("%c%c",&a,&b);
prf("\\n%c%c\\n",a,b);
}
scanf("%c%c",&a,&b);

  本例表示scanf格式控制串"%c%c"的间有空格时输入数据的间可以有空格间隔e.如果格式控制串中有非格式则输入时也要输入该非格式

  例如:

  scanf("%d,%d,%d",&a,&b,&c);其中用非格式符“,”作间隔符故输入时应为:5,6,7

  又如:scanf("a=%d,b=%d,c=%d",&a,&b,&c);

  则输入应为

  a=5,b=6,c=7g.如输入数据和输出类型不致时虽然编译能够通过但结果将不正确

void{
a;
prf("inputanumber\\n");
scanf("%d",&a
);
prf("%ld",a);
}

  由于输入数据类型为整型而输出语句格式串中介绍说明为长整型因此输出结果和输入数据不符如改动如下:

void{
longa;
prf("inputalongeger\\n");
scanf("%ld",&a);
prf("%ld",a);
}

  运行结果为:

inputalongeger
1234567890
1234567890当输入数据改为长整型后输入输出数据相等

  键盘输入

  getchargetchar功能是从键盘上输入般形式为:getchar;通常把输入赋予变量构成赋值语句如:

charc;
c=getchar;#<stdio.h>
void{
charc;
prf("inputacharacter\\n");
c=getchar;
putchar(c);
}

  使用getchar还应注意几个问题:

  1.getchar只能接受单个输入数字也按处理输入多于只接收第

  2.使用本前必须包含文件“stdio.h”

  3.在TC屏幕下运行含本将退出TC屏幕进入用户屏幕等待用户输入输入完毕再返回TC屏幕

void{
chara,b,c;
prf("inputcharactera,b,c\\n");
scanf("%c%c%c",&a,&b,&c);
prf("%d,%d,%d\\n%c,%c,%c\\n",a,b,c,a-32,b-32,c-32);
}

  输入 3个小写字母

  输出其ASCII码和对应大写字母

void{
a;
longb;
floatf;
doubled;
charc;
prf("%d,%d,%d,%d,%d",(a),(b),(f)
,(d),(c));
}

  输出各种数据类型字节长度
Tags:  c语言入门经典 c语言入门教程 c语言入门 c语言输入输出

延伸阅读

最新评论

发表评论