当前位置首页 > 百科> 正文

printf

2019-08-10 17:25:52 百科
printf

printf

printf()函式是格式化输出函式, 一般用于向标準输出设备按规定格式输出信息。

printf()函式的调用格式为: printf("<格式化字元串>", <参量表>)。

格式输出,它是c语言中产生格式化输出的函式(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字元。格式控制由要输出的文字和数据格式说明组成。要输出的文字除了可以使用字母、数字、空格和一些数字元号以外,还可以使用一些转义字元表示特殊的含义。

基本介绍

  • 中文名:格式化输出
  • 外文名:Print Format
  • 外语缩写:printf(函式名)
  • 头档案:stdio.h

原型

extern int printf(const char *format,...);

功能

在c语言中产生格式化输出的函式(定义在 stdio.h 中),其向未重定向终端(显示器、控制台等)输出字元。
printf

用法

//以下程式用于获得输入值i,j并将其输出(i,j之间以逗号隔开)#include<stdio.h>int main(){    int i, j;    scanf("%d %d", &i, &j);    printf("i=%d;j=%d", i, j);    return 0;}
//以下程式用于输出“中文百科”#include<stdio.h>int main(){    printf("中文百科");    return 0;}
format
Format 参数是包含三种对象类型的一个字元串:
* 无格式字元複製到输出流;
* 转换规范,每个规范导致在值参数列表中检索 1 个或更多个项;
* 转义序列。
通常意义上format的格式如下:
%[flags][width][.prec][F|N|h|l]type
规定输出数据的格式,具体如下:
type
type的字元用于规定输出数据的类型,含义如下:
字元
对应数据类型
含义
d / i
int
接受整数值并将它表示为有符号的十进制整数,i是老式写法
o
unsigned int
无符号8进制整数(不输出前缀0)
u
unsigned int
无符号10进制整数
x / X
unsigned int
无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0x)
f(lf)
double
单精度浮点数和双精度浮点数用f(lf 在C99开始加入标準,意思和 f 相同)
e / E
double
科学计数法表示的数,此处"e"的大小写代表在输出时用的“e”的大小写
g / G
double
有效位数,如:%.8g表示单精度浮点数保留8位有效数字。
c
char
字元型。可以把输入的数字按照ASCII码相应转换为对应的字元
s / S
char * / wchar_t *
字元串。输出字元串中的字元直至字元串中的空字元(字元串以'\0‘结尾,这个'\0'即空字元)
p
void *
以16进制形式输出指针
n
int *
到此字元之前为止,一共输出的字元个数,不输出文本
%
无输入
不进行转换,输出字元‘%’(百分号)本身
m
列印errno值对应的出错内容,(例: printf("%m\n"); )
注:%g、%G在小数点位数四位或指数大于等于精度时用%e、%E,否则用%f。
flags
flags 规定输出样式,取值和含义如下:
字元
字元名称
说明
-
减号
左对齐,右边填充空格(默认右对齐)
+
加号
在数字前增加符号 + 或 -
0
数字零
将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用“-”)
空格
输出值为正时加上空格,为负时加上负号
#
井号
type是o、x、X时,增加前缀0、0x、0X
type是e、E、f、g、G时,一定使用小数点
type是g、G时,尾部的0保留
width
用于控制显示数值的宽度,取值和含义如下:
n(n=1,2,3,4,5,6...): 宽度至少为n位,不够以空格填充。
* 格式列表中,下一个参数还是width
width是一个可选的指定最小值栏位宽度的十进制数字字元串。如果转换值字元少于栏位宽度,该栏位将从左到右按指定的栏位宽度填充。如果指定了左边调整选项,栏位将在右边填充。如果转换结果宽于栏位宽度,将扩展该栏位以包含转换后的结果。不会发生截断。然而,小的精度可能导致在右边发生截断。
prec
用于控制小数点后面的位数,取值和含义如下:
无按预设精度显示0
当type=d,i,o,u,x时,没有影响;
type=e,E,f时,不显示小数点
n(n=1,2,3...)
当type=e,E,f时表示的最大小数位数;
type=其他,表示显示的最大宽度
prec是指可选的精度。精度是一个 .(点)后跟十进制数字字元串。如果没有给出精度,按 0(零)对待。精度指定:
* d、o、i、 u、x 或 X 转换的最少数字显示位数。
* e 和 f 转换的基数字元后的最少数字显示位数。
* g 转换的最大有效数字位数。
* s 转换中字元串的最大列印位元组数目。
F|N|h|l
表示指针是否是远指针或整数是否是长整数
F 远指针
N 近指针
h 短整数(short int)
l 长整数(long int) (此处如果与d搭配为%lld则为long long int(C99),与f搭配为%llf则为long double(C99))
[Argument]
包含需要输出的数据,可以是常量(字元常量、数字常量、字元串常量),变数,以及运算式。此处的数据应当与前面的format中的格式控制符一一对应(如果不对应会产生错误)。
例如:
int a=1;float b=1.0;char str[12]="Hello World";printf("This is an example of printf:\n");printf("a is %d,b is %f,and a+b=%f",a,b,a+b);printf("I want to say,%s",str);
转义序列
这些转义序列在字元串中会被自动转换为相应操作命令
表示
符号
意义
符号
意义
\a
铃声(提醒)
\b
Backspace
\f
换页
\n
换行
\r
回车
\t
水平制表符
\v
垂直制表符
\’
单引号
\”
双引号
\\
反斜槓
\?
文本问号
\ ooo (例如\024)
ASCII字元(OCX)
\xhh (例如:\x20)
ASCII字元(HEX)
\xhhhh
宽字元(2位元组HEX)
例如,WCHAR f = L'\x4e00' 或 WCHAR b[] = L"The Chinese character for one is \x4e00"。
函式返回值
printf 函式的一般形式为:
int printf(const char *format, [argument]);
以上形式,我们在Visual C++里输入“printf”(将会看到)。
说明printf函式类型为整型,其返回值是整型值。
其值为printf实际控制输出的字元数。
printf函式实际上是将所有参数按字元输出,根据该函式的参数1(const char *format),我们不难理解。
例如:
int a=6, b;//a的值为6b = 24;//b的值为24printf( "the value of printf is:%d\n", a );printf( "%d\n", b );
以上程式将会输出:
printf
程式举例例一:
#include <stdio.h>#define C "C Programming"int main(void){    int a=12345;    float b=5.12345678;    char e,d,f;    scanf("%c %c %c",&e,&d,&f);    printf("int is:%d\n",a);    printf("float is:%f\n",b);    printf("char is:%s\n",C);     return 0;}
例二
printf 也可以这样用(具体请参照 C 语法,字元串相关内容。这不是 printf 特有功能):
printf("123\n","456\n","789\n");
输出:
123
注意:
printf("123\n" "456\n" "789\n");
的输出结果与
printf("123\n"); printf("456\n"); printf("789\n");
是相同的。
因此输出多行时,也并不需要每行调用一次printf。
例三
妙用printf判断闰年程式
#include<stdio.h>int main(void){    int a;    scanf("%d",&a);    printf("%s",a%(a%100?4:400)?"NO":"YES");    return 0;}
(此例中用到了?:的运算符)
例四
#include <stdio.h>#include<string.h>int main(void){    char ch[20];    int m,n;    strcpy(ch,"Happy!");    scanf("%d%d",&m,&n);    printf("%*.*s\n",m,n,ch);    return 0;}
(此例中使用了scanf函式和strcpy函式)
其中前边*定义的是总的宽度,后边*是指定输出字元个数。分别对应外边参数m和n。
输入:
10 3
输出:
Hap环境变数
下列环境变数影响 printf 命令的执行:
LANG 在 LC_ALL 和相应的环境变数(以 LC_ 开头)没有指定语言环境时,确定语言环境编目使用的语言环境。
LC_ALL 确定用于覆盖由 LANG 或其它任何 LC_环境变数设定的任何语言环境编目值的语言环境。
LC_CTYPE 确定把文本位元组数据顺序解释为字元的语言环境;例如,单一位元组对应多位元组字元的参数。
LC_MESSAGES 确定写讯息使用的语言。
LC_NUMERIC 确定数字格式编排的语言环境。此环境变数影响使用 e、E、f、g 和 G 转换字元编写的数字的格式。
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net