printf()
函数原型声明:int printf(const char *format, ...);
函数
其中 format 用法:%[修饰符]输出格式字符
code
格式字符 | 说明 |
---|---|
d ,i |
十进制整数 |
x ,X |
十六进制无符号整数 |
o |
八进制无符号整数 |
u |
无符号十进制整数 |
c |
单一字符 |
s |
字符串 |
e ,E |
指数形式浮点小数 |
f |
小数形式浮点小数 |
g |
自动选择 e 和 f 结果中较短的一种,且只保留有效数字 |
%% |
输出百分号自己 |
Example:orm
int num = 2233; printf("DEC: num = %d\nHEX: num = %x\nOCT: num = %o\n", num, num, num); char ch = 120; printf("Char: ch = %c\nStr: %s\n", ch, "ArchLinux"); float bi = 22.33; printf("%%e: bi = %e\n%%f: bi = %f\n%%g: bi = %g\n", bi, bi, bi);
上述代码输出结果:字符串
DEC: num = 2233 HEX: num = 8b9 OCT: num = 4271 Char: ch = x Str: ArchLinux %e: bi = 2.233000e+001 %f: bi = 22.330000 %g: bi = 22.33
修饰符 | 功能 |
---|---|
m |
设置输出数据域宽,若数据长度 < m 左补空格,不然按实际输出 |
.n |
对于实数,指定小数点后位数(四舍五入); 对于字符串,指定实际输出位数 |
- |
输出的数据在域内左对齐(不加此修饰符则默认为右对齐) |
+ |
指定在有符号数的正数前显示正号 |
0 |
用于补齐的空格替换成 0 |
# |
在八进制数和十六进制数前显示前导 0 ,0x |
l |
在 d , o , x , u 前,指定输出精度为 long 型在 e , f , g 前,指定输出精度为 double 型 |
为防止数据溢出,能够在常量数据后面添加字母来指定数据类型,好比 12L
表示 long 类型的 12原型
宏定义一年的秒数,这个数确定很大,防止溢出,能够写做:string
#define SEC_YEAR (60LL*60LL*24LL*365LL)
下列语句能够输出该语句所在的函数以及在文件中的行号:io
printf("[%s:%d]\n", __FUNCTION__, __LINE__);
scanf()
函数原型声明:int scanf(const char *format, ...);
table
用 scanf()
接收字符串要注意不能有空格。字符串相关操做最好使用专门的字符串函数。function
scanf() 返回值:返回正确接收到的数据个数。Upon successful return, these functions return the number of characters printed (not including the trailing '\0' used to end output to strings).form
当多个输入放在一块儿用时,可能会出现意想不到的结果,好比:
scanf("%d", &i); scanf("%c", &ch); printf("i = %d, ch = %d\n", i, ch); // ch = 10, ASCII 10 = LF
当输入 i 的值按回车以后,全部的输入都结束了,ch 输出为 10,这是由于 ch 得到了换行符,换行符的 ASCII 码为 10。能够用抑制符解决这个问题:
scanf("%d", &i); scanf("%*c%c", &ch);