输出(printf)
printf 是指格式化输出函数,主要功能是向标准输出设备(终端)按规定格式输出信息。printf 是C语言标准库函数,定义于头文件 <stdio.h>。printf 函数的一般调用格式为:printf("<格式化字符串>", <参量表>) 。输出的字符串除了可以是字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义
功能
printf 函数在输出格式 format 的控制下,将其参数进行格式化,并在标准输出设备(显示器、控制台等)上打印出来。
返回值
如果函数执行成功,则返回所打印的字符总数,如果函数执行失败,则返回一个负数
#include <stdio.h>
int main(void)
{
int cout;
float f = 251;
int w = 19.427;
int x = 92.78;
int y = 0.52;
int z = -87.27;
cout = printf("f=%f,w=%d,x=%d,y=%d,z=%d\n", f, w, x, y, z); //cout为printf函数的返回值
printf("cout:%d\n", cout);
return 0;
}
结果:
f=251.000000,w=19,x=92,y=0,z=-87
cout:33 //上面字符总数+1(\n)
说明符(specifier)
用于规定输出数据的类型,含义如下:
示例:
#include <stdio.h>
int main(void)
{
char ch = 'c';
int count = -112;
float f = 100.0;
char *p = &ch; //指针变量
printf("ch:%c, count:%d, f:%f, p:%p \n", ch, count, f, p); // "\n" 表示换行的转义字符
return 0;
}
输出:
ch:c, count:-112, f:100.000000, p:0xffffcbef
flags(标志)
用于规定输出样式,含义如下:
示例:
#include <stdio.h>
#define PAGES 931
int main()
{
const double RENT = 3852.99; // const-style constant
printf("*%-10d*\n", PAGES); //左对齐,右边补空格
printf("*%+4.2f*\n", RENT); //输出正负号
printf("%x %X %#x\n", 31, 31, 31); //输出0x
printf("**%d**% d**% d**\n", 42, 42, -42); //正号用空格替代,负号输出
printf("**%5d**%5.3d**%05d**%05.3d**\n", 6, 6, 6, 6); //前面补0
return 0;
}
输出:
*931 *
*+3852.99*
1f 1F 0x1f
**42** 42**-42**
** 6** 006**00006** 006**
width(最小宽度)
用于控制显示字段的宽度,取值和含义如下:
示例:
#include <stdio.h>
#define PAGES 931
int main()
{
printf("*%2d*\n", PAGES); //输出的字段长度大于最小宽度,不会截断输出
printf("*%10d*\n", PAGES); //默认右对齐,左边补空格
printf("*%*d*\n", 2, PAGES); //等价于 printf("*%2d*\n",PAGES)
return 0;
}
输出:
*931*
* 931*
*931*
precision(精度)
用于指定输出精度,取值和含义如下:
示例:
#include <stdio.h>
int main()
{
const double RENT = 3852.99; // const-style constant
printf("*%4.2f*\n", RENT);
printf("*%3.1f*\n", RENT);
printf("*%10.3f*\n", RENT);
return 0;
}
输出:
*3852.99*
*3853.0*
* 3852.990*
类型长度(length)
用于控制待输出数据的数据类型长度,取值和含义如下:
示例:
#include <stdio.h>
#define PAGES 336
int main()
{
short num = PAGES;
long n3 = 2000000000; long n4 = 1234567890;
printf("num as short and unsigned short: %hd %hu\n", num, num);
printf("%ld %ld\n", n3, n4);
return 0;
}
输出:
num as short and unsigned short: 336 336 2000000000 1234567890
转义序列
在字符串中会被自动转换为相应的特殊字符,printf() 使用的常见转义字符如下:
示例:
#include <stdio.h>
int main()
{
printf("\'printf\', \"test\"");
printf("\'helloworld\', \"Thank you\"\r\n");
return 0;
}
输出:
'printf', "test"'helloworld', "Thank you"
字符的输出
在计算机当中,所有的字符(键盘上的所有按键就是字符),在存储空间时均以二进制进行存储(二进制可化为八进制、十进制、十六进制),这样的对应关系称为ASCII码。
示例:
#include <stdio.h>
int main()
{
char ch = 'A'; //字符 'A' 字符表示时用' '两个单引号括起来
printf("ch:%d\n", ch); //将字符以十进制进制打印
printf("ch:%c", ch); //将字符以十进制进制打印
return 0;
}
输出:
ch:65
ch:A
ASCII码表