开心过好每天!
2013年(23)
分类: LINUX
2013-08-05 19:01:36
printf=print + format
int printf(const char *format,......);
int fprintf(FILE *stream,const char *format,......);
int sprintf(char *str,const char *format,......);
%【标志】【输出最小宽度】【.精度】【长度】类型
类型:
%d:以十进制输出带符号整数(正数不输出符号)
%u:以十进制形式输出无符号整数
%f:以小数形式输出单、双精度实数
%e(E):以指数形式输出单、双精度实数
%c:输出单个字符
%s:输出字符串
%p:输出一个地址
标志:
-:结果左对齐,右边填空格
+:输出符号(正好或负号)
空格:输出值为正时冠以空格,为负时冠以负号
#:对0类---在输出时加前缀0;对x类---在输出时加前缀0x;对f,e类---当结果中有小数时才给出小数点
输出最小宽度:
用十进制整数来标识输出结果的宽度。若实际位数宽度多余定义的宽度,则按实际宽度输出,若实际位数宽度小于定义的宽度则补空格(默认补在左边)。
精度:
精度格式符以“.”开头,后跟十进制整数。他表示:如果输出数字,则表示输出小数位的宽度(如果指定宽度大于实际小数位宽度,则在右边补随机数字);如果输出字符,则表示输出字符的个数(如果指定宽度大于实际字符宽度,则只输出实际字符)
长度:
长度格式符有h,l两种,h表示按短整型输出,l标识按长整型输出。
scanf=scan + format
int scanf(const char *format,......);
int fscanf(FILE *stream,const char *format,......);
sscanf(const char *str,const char *format,......);
%【*】【输入数据宽度】【长度】类型
*:用以表示该输入项,读入后步赋予相应的变量,即跳过该输入值
eg:scanf("%d,%*d,%d",&a,&b);
输入:1,2,3
a = 1,b = 3
宽度:
指定输入值的宽度
eg1:scanf("%5d",&a);
输入:123456
a = 12345
eg2:scanf("%4d%4d",&a,&b);
输入:123456789
a = 1234,b = 5678
注意:
1、在输入多个数值数据时,若格式控制串中没有非格式字符作为输入数据之间的间隔,则可用:空格、TAB、回车来结束一个数据的输入
2、当只需要输入一个数据时,非法数据也可以结束数据的输入
eg:scanf("%d",&a);
输入:12A123
由于A为非法数据,所以输入结束,a = 12
3、如果scanf中有非格式字符串,则在输入的时候也要输入相同的非格式字符串
eg:scanf("a=%d,b=%d",&a,&b);
正确的输入方式:a=234,b=33