14 · 输入 & 输出

2026.09.27 · 🟡 中

printf 格式化占位符(必背)

占位符 类型 示例
%d / %i int printf("%d", 10)
%u unsigned
%ld / %lld long / long long
%f float / double 默认 6 位小数
%.2f 保留 2 位小数
%c char
%s 字符串
%p 指针地址
%zu size_t(sizeof 结果)
%x / %o 十六进制 / 八进制
printf("姓名: %s, 年龄: %d, 分数: %.1f\n", "Tom", 18, 95.5);
printf("地址: %p\n", (void*)&x);

scanf(最常见的坑都在这)

int n;
scanf("%d", &n);        // ✅ 必须加 & 取地址
char name[20];
scanf("%s", name);      // ✅ 数组名本身就是地址,不用 &

⚠️ 三大坑: 1. 忘了 & → 程序崩溃(把读到的值当地址写)。 2. scanf("%s", buf) 遇空格就停,且不检查缓冲区大小 → 溢出。 3. 输入类型不匹配时,后续读取会错乱。 - 安全替代:fgets() 读整行(见 20-未定义行为与安全函数)。

转义字符

\n 换行 · \t 制表 · \\ 反斜杠 · \" 双引号 · \' 单引号 · \0 空字符

其他 I/O

putchar('A');       // 输出一个字符
char ch = getchar(); // 输入一个字符
puts("hello");      // 输出字符串并自动换行
fprintf(stderr, "错误信息\n");   // 输出到标准错误

关联

02-程序结构与基础语法 · 11-字符串 · 15-文件读写