输入输出 printf/scanf
掌握 printf 格式化输出、scanf 输入、格式占位符、缓冲区
输入输出 printf/scanf
printf 负责输出,scanf 负责输入——两个都来自 stdio.h,是 C 语言最早学会的两个函数。
学完本章你将: 掌握 printf 格式化、scanf 输入、常见陷阱。
printf —— 格式化输出
c
#include <stdio.h>
int main() {
int age = 25;
float score = 92.5;
char grade = 'A';
char name[] = "小明";
printf("姓名:%s\n", name);
printf("年龄:%d 岁\n", age);
printf("成绩:%.1f 分\n", score);
printf("等级:%c\n", grade);
return 0;
}
常用占位符
| 占位符 | 含义 |
|---|---|
| %d | int(有符号整数) |
| %u | unsigned int |
| %f | float/double |
| %lf | double(scanf 专用) |
| %c | char |
| %s | 字符串 |
| %p | 指针地址 |
| %x / %X | 十六进制 |
| %% | 输出 % 本身 |
精度控制
c
double pi = 3.1415926535;
printf("%.2f\n", pi); // 3.14(2 位小数)
printf("%10d\n", 42); // " 42"(宽度 10,右对齐)
printf("%-10d", 42); // "42 "(左对齐)
printf("%08d", 42); // "00000042"(补零)
scanf —— 格式化输入
c
int age;
printf("请输入年龄:");
scanf("%d", &age); // 注意:必须用 & 取地址!
printf("你 %d 岁\n", age);
⚠️ scanf 三大陷阱:
- 必须传地址
&—— 忘了就崩溃或读到垃圾- 不会读走换行 ——
%c可能读到上次残留的 '\n'- 没有缓冲区保护 ——
%s可能溢出,改用fgets