scanf与printf的用法及注意事项
本文对C语言中标准输入输出做一些介绍,盘点一下需要注意的踩坑点。
scanf
格式化符内空格的区别
scanf("%c %c", &c1, &c2)
与scanf("%c%c", &c1, &c2)
不同,前者过滤掉两个字符中间的空格,后者将空格作为c2
的值
scanf
输入double
时必须使用%lf
格式化输入
1 | scanf("%d:%d:%d"); |
可输入格式为hh:mm:ss
的数据,其中02:12:23
输入后小时的int
的值同样为2
类型对应表
格式符 | 数据类型 |
---|---|
%lf |
double |
%f |
float |
%d |
int |
%lld |
long long int |
printf
输出指定格式的数字
1 | printf("%02d:%02d:%02d\n", delta.hh, delta.mm, delta.ss); |
输出结果为 02:03:04
printf("%a.bf", var)
,其中a,b为常数。含义为:
a代表输出占|a|(a的绝对值)个字节的宽度,当实际宽度超过a时,按实际宽度输出,否则输出a个字节,不足部分补空格。
如果a为正数,输出的有效数字在右侧,左侧补空格。 如果a为负数,输出的有效数字在左侧,右侧补空格。
b代表输出带有b位小数,不足部分补0。 a,b可单独使用。
比如
printf("%4f", 1.2);
会输出一个空格加上1.2
。
printf("%.3f", 1.2);
会输出1.200
。
printf("%-8.4f", 1.2);
会输出1.2000
再输出两个空格。