当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 printf用法及代码示例


C语言stdio头文件(stdio.h)中printf函数的用法及代码示例。

用法:

int printf ( const char * format, ... );
将格式化的数据打印到标准输出
写入由指向的C字符串格式到标准输出(stdout)。如果格式包括格式说明符(以开头的子序列%),后面的其他参数格式格式化并插入结果字符串中,以替换其各自的说明符。

参数

format
包含要写入的文本的C字符串stdout
它可以选择包含嵌入式格式说明符这些值将替换为后续附加参数中指定的值,并按要求设置格式。

A 格式说明符遵循此原型:[请参阅下面的兼容性说明]
%[flags][width][.precision][length]specifier

哪里指定符最后是最重要的组成部分,因为它定义了类型及其相应参数的解释:
说明符输出示例
d 或者 i有符号十进制整数392
u无符号十进制整数7235
o无符号八进制610
x无符号十六进制整数7fa
X无符号十六进制整数(大写)7FA
f十进制浮点,小写392.65
F十进制浮点,大写392.65
e科学计数法(尾数/ index ),小写3.9265e+2
E科学计数法(尾数/ index ),大写3.9265E+2
g使用最短的表示形式:%e或者%f392.65
G使用最短的表示形式:%E或者%F392.65
a十六进制浮点,小写-0xc.90fep-2
A十六进制浮点,大写-0XC.90FEP-2
cCharactera
s字串sample
p指针地址b8000000
n什么都没打印。
相应的参数必须是指向signed int
到目前为止写入的字符数存储在指定的位置。
%A %其次是%角色会写一个%到流。%

这个格式说明符还可以包含sub-specifiers:标志宽度。精确修饰符(按此顺序),它们是可选的,并遵循以下规范:

标志描述
-在给定的字段宽度内为Left-justify;右对齐是默认设置(请参见宽度sub-specifier)。
+强制在结果前加上加号或减号(+或者-),即使是正数也是如此。默认情况下,只有负数前面带有一个-标志。
(空间)如果不写任何符号,则在该值之前插入一个空格。
#用于ox或者X指定值的开头00x或者0X分别针对不等于零的值。
用于aAeEfFg或者G即使没有更多的数字,它也会强制写入的输出包含小数点。默认情况下,如果没有数字跟随,则不写小数点。
0Left-pads带有零的数字(0),而不是指定填充时的空格(请参见宽度sub-specifier)。

宽度描述
(数字)最少要打印的字符数。如果要打印的值小于此数字,则结果将用空格填充。即使结果较大,该值也不会被截断。
*宽度不是在格式字符串中指定的,而是作为必须格式化的参数之前的附加整数值参数。

。精确描述
.数字对于整数说明符(diouxX):precision指定要写入的最小位数。如果要写入的值短于该数字,则结果将以前导零填充。即使结果更长,该值也不会被截断。的精度0表示没有字符被写为值0
为了aAeEfF说明符:这是要打印的位数小数点(默认为6)。
为了gG说明符:这是要打印的最大有效位数。
为了s:这是要打印的最大字符数。默认情况下,将打印所有字符,直到遇到结尾的空字符为止。
如果指定的期间没有明确的值精确0假设。
.*精度不是在格式字符串中指定的,而是作为必须格式化的参数之前的附加整数值参数。

这个长度sub-specifier修改数据类型的长度。这是一个图表,显示了用于解释带有或不带有相应参数的类型长度说明符(如果使用其他类型,则在允许的情况下执行正确的类型提升或转换):
说明符
长度d iu o x Xf F e E g G a Acspn
(没有)intunsigned intdoubleintchar*void*int*
hhsigned charunsigned charsigned char*
hshort intunsigned short intshort int*
llong intunsigned long intwint_twchar_t*long int*
lllong long intunsigned long long intlong long int*
jintmax_tuintmax_tintmax_t*
zsize_tsize_tsize_t*
tptrdiff_tptrdiff_tptrdiff_t*
Llong double
关于的注意事项c说明符:需要一个int(或者wint_t)作为参数,但会正确转换为char值(或wchar_t),然后对其进行格式化以进行输出。

注意:黄色行表示指定符和C99引入的sub-specifiers。看<cinttypes>用于扩展类型的说明符。
... (additional arguments)
取决于格式字符串,函数可能需要一系列附加参数,每个参数都包含一个用于替换a的值格式说明符在里面格式字符串(或指向存储位置的指针,用于n)。
这些参数至少应与格式说明符。该函数将忽略其他参数。

返回值

成功后,将返回写入的字符总数。

如果发生写入错误,则错误指示(ferror)设置,并返回负数。

如果在写入宽字符时发生多字节字符编码错误,errno被设定为EILSEQ并返回负数。

示例

/* printf example */
#include <stdio.h>

int main()
{
   printf ("Characters: %c %c \n", 'a', 65);
   printf ("Decimals: %d %ld\n", 1977, 650000L);
   printf ("Preceding with blanks: %10d \n", 1977);
   printf ("Preceding with zeros: %010d \n", 1977);
   printf ("Some different radices: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
   printf ("floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
   printf ("Width trick: %*d \n", 5, 10);
   printf ("%s \n", "A string");
   return 0;
}


输出:

Characters: a A
Decimals: 1977 650000
Preceding with blanks:       1977
Preceding with zeros: 0000001977
Some different radices: 100 64 144 0x64 0144
floats: 3.14 +3e+000 3.141600E+000
Width trick:    10
A string


相关用法


注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C printf function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。