Z
ZHANK
编程在线教程C 语言教程输入输出 printf/scanf
入门基础

输入输出 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;
}

常用占位符

占位符含义
%dint(有符号整数)
%uunsigned int
%ffloat/double
%lfdouble(scanf 专用)
%cchar
%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 三大陷阱:

  1. 必须传地址 & —— 忘了就崩溃或读到垃圾
  2. 不会读走换行 —— %c 可能读到上次残留的 '\n'
  3. 没有缓冲区保护 —— %s 可能溢出,改用 fgets