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再输出两个空格。

This is a summary

Any content (support inline tags too).