快速复习C语言 - 2格式化输入与输出

格式化输入输出函数

printf()

函数原型声明:int printf(const char *format, ...);函数

其中 format 用法:%[修饰符]输出格式字符code

标准输出格式字符表:

格式字符 说明
di 十进制整数
xX 十六进制无符号整数
o 八进制无符号整数
u 无符号十进制整数
c 单一字符
s 字符串
eE 指数形式浮点小数
f 小数形式浮点小数
g 自动选择 ef 结果中较短的一种,且只保留有效数字
%% 输出百分号自己

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
# 在八进制数和十六进制数前显示前导 00x
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);
相关文章
相关标签/搜索