1. 转化说明符
%a(%A)浮点数,十六进制数字和p-(P-)表示法(C99)%c个字符
%d个有符号十进制整数
%f浮点数(包括浮点数和doulbe)%e(%E)浮点指数输出[e-(E-)表示法]%g(%G)浮点数不显示无意义的零“ 0”“
%i有符号十进制整数(与%d相同)%u无符号十进制整数
%o八进制整数,例如0123
%x(%X)十六进制整数0f(0F)例如0x1234%p指针%s字符串%%“%”
2. 徽标
左对齐: “-”,例如“%-20s”右对齐: “ +”,例如“%+ 20s”
空格: 如果符号为正,则将显示一个空格,如果符号为负,则将显示“-”,例如“%6.2f”. #: 对c,s,d,u类无效;对于o类,在输出时添加前缀o;对于x类,将0x添加到输出中;
对于e,g,f类型,仅当结果为小数时才给出小数点.
3. 格式字符串(格式)
[标记] [最小输出宽度] [. [精度] [长度]类型“%-md”: 左对齐,如果m小于实际值,则输出为实际值.
“%m.ns”: 输出m位,从左侧开始输入字符串n位,当n> m或m省略时,在左侧填充空格m = n
例如“%7.2s”输入中国
输出“ CH”“%m.nf”: 输出浮点数,m为宽度,n为小数点右边
例如“%3.1f”输入3852.99
输出3853.0长度: h为短整形量,l为长整形量
printf格式控件的完整格式: %-0 m.n l或h格式字符
以下是格式说明的每个组成部分的说明:
①%: 表示格式描述的开始符号,必不可少.
②-: 是-表示左对齐输出,如果省略,则表示右对齐输出. ③0: 0表示指定的槽位已填充0,如果省略,则表示指定槽位未填充.
④m.n: m表示字段宽度,即相应的输出项在输出设备上占据的字符数. N代表准确性. 用于描述输出实数的小数位数. 指定n时,隐含的精度为n = 6位数字.
⑤l或h: l整数类型是long类型,实数类型是double类型. h用于将整数类型的格式字符修改为短型.
scanf函数称为格式输入函数,即,数据以用户指定的格式从键盘输入到指定的变量中.
scanf函数是标准库函数c语言中printf输出格式,其函数原型位于头文件“ stdio.h”中. 与printf函数一样,C语言也允许在使用scanf函数之前不包括stdio.h文件. scanf函数的一般形式为:
scanf(“格式控制字符串”,地址表列);
其中,格式控制字符串具有与printf函数相同的功能,但是它无法显示非格式字符串,即无法显示提示字符串. 每个变量的地址在地址表列中给出. 地址由地址运算符“&”和变量名组成.
例如: &a,&b分别代表变量a和变量b的地址.
此地址是编译系统分配给内存中变量a和b的地址. 在C语言中,使用了地址的概念,这与其他语言不同. 应该区分变量值和变量地址这两个不同的概念. 变量的地址由C编译器系统分配,用户无需关心特定的地址.
格式字符串格式字符串的一般格式为:
%[*] [输入数据宽度] [长度]类型
带有方括号[]的项目是可选的. 每个项目的含义如下.
1)类型
表示输入数据的类型,其格式字符和含义如下表所示.
设置字符含义
d输入一个十进制整数
o输入八进制整数
x输入十六进制整数
u输入无符号十进制整数
f或e输入实数(十进制或指数形式)
c输入一个字符
输入字符串
2)“ *”符号
用于指示输入项目. 读入后,未分配相应的变量,即跳过输入值. 如:
scanf("%d%*d%d",&a,&b);
scanf("%d%*d%d",&a,&b);
当输入为: 123时,将1分配给a,跳过2,将3分配给b.
3)宽度
使用十进制整数指定输入宽度(即字符数). 例如:
scanf("%5d",&a);
scanf("%5d",&a);
输入12345678仅会将12345分配给变量a,其余部分将被截断.
另一个例子:
scanf("%4d%4d",&a,&b);
scanf("%4d%4d",&a,&b);
输入12345678会将1234分配给a,将5678分配给b.
4)长度
长度格式字符为l和h,l表示输入长整数数据(例如%ld)和双精度浮点数(例如%lf). h表示输入短整数数据.
使用scanf函数时,还必须注意以下几点:
scanf函数中没有精确控制,
例如: scanf(“%5.2f”,&a);是非法的. 您不能使用此语句输入带两位小数的实数.
在scanf中需要变量地址. 如果指定了变量名,则会发生错误.
如果scanf(“%d”,a);是非法的,应将其更改为scnaf(“%d”,&a);合法.
输入多个数值数据时,如果格式控制字符串中没有非格式字符作为输入数据之间的间隔,则可以使用空格,TAB或回车作为间隔. 当C编译器遇到空格,TAB,回车或非法数据时(例如,当为“%d”输入“ 12A”时,A是非法数据),则认为数据已结束.
输入字符数据时,如果格式控制字符串中没有非格式字符,则所有输入的字符均视为有效字符.
示例:
scanf("%c%c%c",&a,&b,&c);
scanf("%c%c%c",&a,&b,&c);
输入d,e和f,将d分配给a,将d分配给b,将e分配给c. 仅当输入为def时,才能将“ d”分配给a,将“ e”分配给b,将“ f”分配给c.
如果在格式控件中添加空格作为空格,例如:
scanf("%c%c%c",&a,&b,&c);
scanf("%c%c%c",&a,&b,&c);
输入时,可以在每个数据之间添加空格.
示例;
#include
intmain(void){
chara,b;
printf("inputcharactera,b\n");
scanf("%c%c",&a,&b);
printf("%c%c\n",a,b);
return0;
}
#include
intmain(void)
{
chara,b;
printf("inputcharactera,b\n");
scanf("%c%c",&a,&b);
printf("%c%c\n",a,b);
return0;
}
因为scanf函数“%c%c”中没有空格,所以输入MN,结果输出仅为M. 当输入更改为MN时,可以输出MN的两个字符.
示例
#include
intmain(void){
chara,b;
printf("inputcharactera,b\n");
scanf("%c%c",&a,&b);
printf("\n%c%c\n",a,b);
return0;
}
#include
intmain(void)
{
chara,b;
printf("inputcharactera,b\n");
scanf("%c%c",&a,&b);
printf("\n%c%c\n",a,b);
return0;
}
此示例表明,当scanf格式控制字符串“%c%c”之间存在空格时,输入数据之间可能存在空格.
5)如果格式控制字符串中包含非格式字符,则在输入时还必须输入非格式字符.
示例:
scanf("%d,%d,%d",&a,&b,&c);
scanf("%d,%d,%d",&a,&b,&c);
非格式字符“,”用作间隔字符,因此输入应为: 5、6、7. 另一个例子:
scanf("a=%d,b=%d,c=%d",&a,&b,&c);
scanf("a=%d,b=%d,c=%d",&a,&b,&c);
输入应为: a = 5,b = 6,c = 7.
6)如果输入数据和输出类型不一致,尽管编译可以通过c语言中printf输出格式,但结果将不正确.
示例
#include
intmain(void){
inta;
printf("inputanumber\n");
scanf("%d",&a);
printf("%ld",a);
return0;
}
#include
intmain(void)
{
inta;
printf("inputanumber\n");
scanf("%d",&a);
printf("%ld",a);
return0;
}
由于输入数据类型为整数,并且输出语句的格式字符串被描述为长整数,因此输出结果与输入数据不匹配. 如果更改步骤如下
示例
#include
intmain(void){
longa;
printf("inputalonginteger\n");
scanf("%ld",&a);
printf("%ld",a);
return0;
}
#include
intmain(void)
{
longa;
printf("inputalonginteger\n");
scanf("%ld",&a);
printf("%ld",a);
return0;
}
运行结果为:
inputalonginteger
1234567890
1234567890
将输入数据更改为长整数类型时,输入和输出数据相等.
示例
#include
intmain(void){
chara,b,c;
printf("inputcharactera,b,c\n");
scanf("%c%c%c",&a,&b,&c);
printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);
return0;
}
#include
intmain(void)
{
chara,b,c;
printf("inputcharactera,b,c\n");
scanf("%c%c%c",&a,&b,&c);
printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);
return0;
}
输入三个小写字母并输出其ASCII码和相应的大写字母.
示例
#include
intmain(void){
inta;
longb;
floatf;
doubled;
charc;
printf("\nint:%d\nlong:%d\nfloat:%d\ndouble:%d\nchar:%d\n",sizeof(a),sizeof(b),sizeof(f),sizeof(d),sizeof(c));
return0;
}
#include
intmain(void)
{
inta;
longb;
floatf;
doubled;
charc;
printf("\nint:%d\nlong:%d\nfloat:%d\ndouble:%d\nchar:%d\n",sizeof(a),sizeof(b),sizeof(f),sizeof(d),sizeof(c));
return0;
}
输出各种数据类型的字节长度.
本文来自“ 10910765”博客,请保留此源
C语言scanf输入格式printf输出格式
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-/a/ruanjian/article-176833-1.html