案例 1
通过 scanf 函数的 %m格式控制 可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过 printf 函数的 %0格式控制符,输出数值时指定左面不使用的空位置自动填0。
#include <stdio.h>
int main() {
//输入数据
int year = 0;
int month = 0;
int date= 0;
scanf("%4d%2d%2d", &year, &month, &date);
//输出
printf("year=%d\n", year);
printf("month=%02d\n", month);
printf("date=%02d\n", date);
return 0;
}
%02d:
- 0:自动补 0,否则空格填充。
- 2:输出数据域宽为 2。
%2d:
输出数据域宽为 2。空格填充。右对齐。
%-2d:
输出数据域宽为 2。空格填充。左对齐。
案例 2
#include <stdio.h>
int main() {
//输入数据
int id = 0;
float c = 0.0f;
float math = 0.0f;
float eng = 0.0f;
scanf("%d;%f,%f,%f", &id, &c, &math, &eng);
//输出
printf("The each subject score of No. %d is %.2f, %.2f, %.2f.\n", id, c, math, eng);
}
- %.2f:小数点后面保留两位小数。默认为小数点后保留六位小数。
- 0.0 默认是 double 类型的。
案例 3
printf 函数返回 打印的字符的个数,遇到错误后返回一个负数。
#include <stdio.h>
int main() {
int n = printf("hello world!");
printf("\n%d\n", n);
return 0;
}
注意:'\n' 也算入打印的字符的个数中!
案例 4
通过 scanf 函数遍历读取所有的数。
#include <stdio.h>
int main() {
int arr[4] = 0;
int i = 0;
while (i < 4) {
scanf("%d", &arr[i]);
i++;
}
//找最大值
int max = arr[0];
i = 1;
while (i < 4) {
if (arr[i] > max) {
max = arr[i];
}
i++;
}
printf("%d\n", max);
return 0;
}
案例 5
scanf 函数采用 %s 的格式去读取带有空格的字符串的时候遇到空格就不再往后读了。
采用 gets 函数可以读取带有空格的字符串放入 buffer 中。
char* gets(char* buffer);