iOS基础-学习笔记24
15-printf函数介绍
printf函数是一个标准的库函数,能够以精确的格式输出程序运算的结果。
printf函数的调用格式为:
printf(“格式控制字符串”,输出项列表); 如:printf(“%d,%d”,a,b);
格式字符串:
是由格式字符(包括:转换说明符、标识、域宽精度)和普通字符组成,转换说明符和百分号(%)一起使用,用来说明输出数据的数据类型,标识长度和精度
输出项列表:
可以是常量、变量和表达式,也可以没有输出项,这些输出项必须与格式控制字符串在类型和数量上完全对应,否则,结果将不可预测。当有多个输出项时,各个输出项之间用‘,‘分隔
3、 格式控制符使用说明
printf的格式控制符的完整格式:% - 0 m.n l或h 个是字符
下面对组成格式说明的各项加以说明:
1)%表示格式说明的起始符号,不可缺少
2)-表示左对齐输出(右侧补空格),如省略表示右对齐输出(左侧补空格)
3)0表示指定空位填0,如省略表示指定空位不填
4)m.n指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说用输出的实数型的小数位。对数值型的来说,未指定n时,蕴含的精度为n=6位
5)l或h对整型指long型,对实型指double型h用于将整型的个是字符修正为short型
格式字符:
格式字符用以指定输出项的数据类型和输出格式
1) d格式:用来输出十进制整数,有以下几种用法:%ld输出长整型数据。
2) o格式:以无符号八进制形式输出整数。对长整型可以使用%lo格式输出。同样也可以使用字段宽度用%mo格式输出
3) x格式:以无符号十六进制形式输出整数。对长整型可以用%lx格式输出。同样也可以指定字段宽度用%mx格式输出
4) u格式:以无符号十进制形式输出整数。对长整型可以用%lu格式输出。同样也可以指定字段宽度用%mu格式输出
5) c格式:输出一个字符
6) s格式:用来输出一个字符串。有几种用法:
a) %s:例如:printf(“%s”,”china”);字符串(不包括双引号)。
b) %ms:输出的字符串占m列,如字符串本身长度大于m,则突破m的限制,将字符串全部输出。若串长小于m,则左补空格。
c) %-ms:如果串长小于m,则在m列范围内,字符串向左靠,右边补空格。
d) %m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格,注意:如果n未指定,默认为0。
e) %-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出,注意:如果n未指定,默认为0.
如果是sprintf(desc,”%m.ns”,sour);如果desc空间够的话,会在%m.ns串的结尾自动补null字符,不同于strncpy。
例如:sprintf(desc,”%.3s”,”123456”);desc如果空间>=4字节的话,第4个字节将是null字符。
1)%f:不指定宽度,整数部分全部输出并输出6位小数
2)%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。
通过%m.n的形式,依然无法解决2)的精度不准确问题,原因是float类型,小数点后6位有效
3)%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。
4)%*.*特殊用法
7) e格式:以指数形式输出实数。可用一下形式:
%e数字部分(又称尾数)输出6位小数,指数部分占5位或4位
%m.ne和%-m.ne:m、n和“-“字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度
8) g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。
9) p格式:输出变量在内存中的地址(指针)
|
|