
一、核心区别总览 空白符 空格、回车、Tab%d读取整数自动跳过所有前导空白符只识别数字空白不会被读取、不会占用输入位置。%c读取单个字符不跳过任何空白符空格、回车、Tab 都被当成合法普通字符会直接被读取占用。二、案例 1连续输入中间加空格1使用%d%d#include stdio.h int main() { int a, b; scanf(%d%d, a, b); printf(a%d, b%d, a, b); return 0; }输入示例10 20运行结果a10, b20解读两个%d之间的空格被自动忽略两个整数被正常读取。2使用%c%c#include stdio.h int main() { char a, b; scanf(%c%c, a, b); printf(a%c, b%c, a, b); return 0; }输入1 21 空格 2运行结果a1, b解读• 第一个 %c 读到字符 1• 第二个 %c 读到中间的空格空格占用了位置2 没被读到。三、案例 2输入后敲回车换行符 \n1%d不受回车影响int a, b; scanf(%d, a); scanf(%d, b);操作输入 10 → 回车 → 输入 20结果a10b20解读回车是空白符%d 直接跳过无影响。2%c会读取回车高频易错点char a, b; scanf(%c, a); scanf(%c, b);操作输入 A → 回车结果 • a A • b 回车符看不到但确实被读取解读按下的回车 \n 被第二个 % c 直接捕获无法再输入新字符。